setTimeoutメソッドの使用中にイメージの移動を停止するのに問題があります。私はページの向こう側にランダムな量を移動するイメージを持っていて、それが他のイメージに達すると停止するようにします。 setTimeoutをwhileループに入れてみましたが、動作させることができません。永遠に、whileループせずにページ全体の画像が移動しsetTimeout関数を実行してループを使用して終了する方法
function moveCars() {
RaceCar1();
}
function RaceCar1() {
var finish = document.getElementById('finish');
var animate;
var moveCar1 = Math.floor((Math.random() * 100) + 1);
var car1 = document.getElementById('car1');
car1.style.left = parseInt(car1.style.left) + moveCar1 + 'px';
while(parseInt(car1.style.left) <= parseInt(finish.style.left)) {
animate = setTimeout(RaceCar1, 500);
}
}
:以下は、私は外部のJavaScriptファイルを持っているコードがある、私はHTMLでmoveCars()関数を呼び出します。しかし、そこのwhileループでは、setTimeoutは一度だけ実行されます。
*注:ループ内でfinish.style.left
を使用する代わりに値を設定するだけで、イメージは引き続き移動しました。
なぜ 'setInterval'と' clearInterval'を使用しないのですか(後者は、停止させたいイベントで呼び出されるべきです)? – YakovL
'animate = setInterval(RaceCar1,500)'を使用し、必要に応じて 'clearInterval(animate);を使用するか、擬似再帰的' setTimeout() '呼び出しの使用を主張する場合は条件付き' return'あなたのRaceCar1関数の 'animate = setTimeout(RaceCar1、500);'行前 – Redu
setTimeoutは非同期であることに注意してください。これはwhileループで作業したい。 –