- ベストアンサー
イベントが初めの一回しか起きません
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)に通常のレイヤー移動。 その後動かなくなります。 どうかよろしくお願いします。
- みんなの回答 (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); } }
その他の回答 (1)
- rally
- ベストアンサー率28% (32/111)
JavaScriptは、エラーが出るとそれ以降動作しません。 manmosuさんのページでもエラーが出てるのではないでしょうか? JavaScriptの動作テストをする場合は、ブラウザの設定で 「エラーの詳細を表示する」 の設定をしていた方がいいと思います。 IEなら、[ツール]→[インターネットオプション]→[詳細設定]で、できます。
お礼
さっそくの回答ありがとうございました。
お礼
本当に助かりました。 スクリプトまで作って頂き、ありがとうございました。