• ベストアンサー

イベントが初めの一回しか起きません

JavaScriptを勉強し始めて何とか自分のホームページに使いたいのですが、以下のプログラムをonClickイベントハンドラで動かせたいのですが、初めの一回のみ動き、その後クリックしても動きません。やはり作り直した方がいいのでしょうか。 var timerID; var ichi = 68; var maxX = 120; var perX = 2; speed = 10; function layerMv(){ if(ichi<maxX) { ichi += perX; if(document.all){ var data = document.all('S1').style; data.visibility = "visible"; data.left = ichi; } if(document.layers){ var data = document.layers['S1']; data.visibility = "visible"; data.left = ichi; } timerID = setTimeout("startMv()",speed); }else if(ichi==maxX){ clearTimeout(timerID); } } 他のボタンonMouseoverで初期位置(68,y)に通常のレイヤー移動。 その後動かなくなります。 どうかよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • b-takeda
  • ベストアンサー率33% (7/21)
回答No.2

>timerID = setTimeout("startMv()",speed); ここの部分が、正しくは timerID = setTimeout("layerMv()",speed); ではないでしょうか? 参考までにスクリプトを作ってみました。 var timerID = 0; var ichi = 68; var maxX = 120; var perX = 2; var speed = 10; function layerMv(){   if(ichi<maxX) { ichi = ichi + perX; if(document.all){ window['S1'].style.visibility = "visible"; window['S1'].style.left = ichi; } if(document.layers){ document['S1'].visibility = "visible"; document['S1'].left = ichi; } timerID = setTimeout("layerMv()",speed);   }else if(ichi==maxX){ clearTimeout(timerID);   } }

manmosu
質問者

お礼

本当に助かりました。 スクリプトまで作って頂き、ありがとうございました。

その他の回答 (1)

  • rally
  • ベストアンサー率28% (32/111)
回答No.1

JavaScriptは、エラーが出るとそれ以降動作しません。 manmosuさんのページでもエラーが出てるのではないでしょうか? JavaScriptの動作テストをする場合は、ブラウザの設定で 「エラーの詳細を表示する」 の設定をしていた方がいいと思います。 IEなら、[ツール]→[インターネットオプション]→[詳細設定]で、できます。

manmosu
質問者

お礼

さっそくの回答ありがとうございました。

関連するQ&A