• 締切済み

以下のJAVASCRIPTが、動作しないのですが、その原因がわかりませ

以下のJAVASCRIPTが、動作しないのですが、その原因がわかりません。助けてください <html> <head> <script type="text/javascript"> var x=200,y=100; var dx=10,dy=10; function move() { setTimeout("move()",100); var ball=document.getElementById("ball"); x+=dx; y+=dy; ball.style.left=x; ball.style.top=y; if (x<=50 || x+10>=450) dx=-dx; if (y<=50 || y+10>=450) dy=-dy; } </script> </head> <body onLoad="move()"> <img src="wall.png" style="position:absolute;left:46;top:46"> <img id="ball" src="ball.png" style="position:absolute;left:200;top:100"> </body> </html>

みんなの回答

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.3

確かにご提示のソースのままだと、ブラウザで動作する場合とそうでない場合がありますね。 直接スクリプトのエラーが出ているわけではないですが、top、leftの位置指定に単位がないのが原因ではないでしょうか? スクリプト内の指定箇所及び、HTML内でのstyle指定の計4箇所に単位をつけてみてください。 こちらでは、それで動作しましたが… (中括弧がない場合、if分は条件がtrueの時にその後の1センテンス分の処理が実行されるだけで、エラーにはならないはずです。)

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

単位を指定してみてください。 <img src="wall.png" style="position:absolute;left:46px;top:46px"> <img id="ball" src="ball.png" style="position:absolute;left:200px;top:100px"> ............. ball.style.left=x+"px"; ball.style.top=y+"px"; ............ ※この場合ifに{}はいらないです。javascriptはリテラルじゃない スペースや改行コードは無視します。

  • jein
  • ベストアンサー率49% (2799/5705)
回答No.1

if文で条件は書いてあるけどtrueのときに行う処理が 定義されていない(中括弧でくくる必要がある)からでは? 中括弧を省略したかったら同じ行に処理内容を書かないとエラーになります。 C言語なんかもそうですが、改行には意味があるので、その意味を理解していないと エラーが起きてもなぜエラーが起きたのかわからないことになります。

関連するQ&A