を実行していない私のhtmlです:のJavascriptのsetTimeoutはここ
<div class="slider_container Centered">
<figure id="Slider">
<img src="Images/HBC.jpg" id="1" class="effect Image"/>
<img src="Images/Easter-Pic.jpg" id="2" class="effect Image"/>
</figure>
</div>
と私のJavascriptを:
var Figure_Slider;
var Images;
var Image_Num;
var Current_Element;
var Previous_Element;
function main()
{
Figure_Slider = document.getElementById("Slider");
Images = document.getElementById("Slider").children;
Image_Num = Images.length;
for (var i = 1; i <= Image_Num; i++)
{
var index = i;
Current_Element = document.getElementById(i.toString());
if (index == 1)
{
Current_Element.classList.add("active");
}
else
{
Previous_Element.classList.remove("active");
Current_Element.classList.add("active");
}
window.setTimeout(function(){advance();}, 4000); //This doesn't work
advance();
}
Current_Element.classList.remove("active");
}
function advance()
{
Previous_Element = Current_Element;
}
window.onload = main;
私がイメージスライダーを作成しようとしています。 Chromeのデバッグツールを使用して手動でjavascriptを実行すると、正常に動作します。私がちょうどそれをまっすぐに動かすとき、タイマーは実行されません。 setTimeout
機能の問題点は何ですか?私はその出力の多くの例が変数に与えられていないことを見てきました。そうではありません。私は匿名の機能修正をしました。 advance();
setTimeout
の下のコールはちょうど一時的なので、私はそのロジックを見ることができます。 advance();
行がないと、スクリプトは未処理のイベントをドロップします。Previous_Element
には、削除するアクティブな名前のクラスがありません。したがって、タイマー文の両方の部分(遅延と関数の実行)は発生しません。それ以外のコードは正常に動作します。 CSSが必要な場合は教えてください。私は修正のいくつか試してみた:
function wait(delay)
{
setInterval(advance(), delay);
}
を次にループ内でその関数を呼び出すが、それは私のCPUの100%以上を使用してブラウザをロックします。これを行う別の方法がありますか?
ありがとうございます。
なぜ、setTimeoutの代わりにsetIntervalを使用しないでください。 –