これが私のコードです.... http://jsfiddle.net/KQ8gW/ これで私はsetTimeoutを1分に設定しましたが、関数はそれよりずっと前に呼び出されます.なぜそうなのですか????
質問する
329 次
3 に答える
2
関数への参照を渡さずに、すぐに関数を呼び出しており、間隔を繰り返し設定しています。したがって、渡すsetInterval()
のは実行からの戻り値でSlide(c,n)
あり、後で呼び出される関数ではありません。したがって、すぐに1回だけ呼び出されます。
これを修正するには、次のように変更します。
setInterval(Slide(c,n),60000);
これに:
setTimeout(function() {Slide(c,n)},60000);
これが私のコードである場合、タイマーも使用しません。次のようなアニメーション完了関数を使用します。
var n = $("#slideShow div img").length;
var c = 0;
Slide(c,n);
function Slide(c,n){
c = ++c % n;
$("#slideShow div").animate(
{left:-500*c},
3000,
function() {Slide(c,n)}
);
}
作業デモ: http: //jsfiddle.net/jfriend00/nykd3/
于 2012-08-05T16:55:35.733 に答える
0
タイムアウトではなく、間隔を設定しました。使ってみてくださいsetTimeout(function, time)
于 2012-08-05T16:55:02.050 に答える
0
間隔内の間隔内の間隔を呼び出しています....など。
毎分定期的に関数を実行し、関数が実行されるたびに新しい間隔を設定し、無限大までループします。
次のように、間隔を関数の外に置き、関数で呼び出して評価を回避します。
var n = $("#slideShow div img").length, c = 0;
Slide(c, n);
setInterval(function() { Slide(c, n); }, 60000);
function Slide(c, n) {
c = ++c % n;
$("#slideShow div").animate({
left: -500 * c
}, 7000);
}
于 2012-08-05T16:59:09.950 に答える