SetTimeout延迟未按jquery幻灯片中的预期工作

SetTimeout delay not working as expected in jquery slide

本文关键字:工作 幻灯片 延迟 jquery SetTimeout      更新时间:2023-09-26

这是我的代码。。。。http://jsfiddle.net/KQ8gW/在这篇文章中,我将setTimeout设置为1分钟,但函数在那之前就被调用了。为什么会这样????

您正在立即调用函数,而不是传递对函数的引用,并且您正在重复设置间隔。因此,传递给setInterval()的是执行Slide(c,n)的返回值,而不是稍后调用的函数。因此,它被立即调用,并且只调用一次。

要修复它,请更改此:

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/

您设置了一个间隔,而不是超时。尝试使用setTimeout(function, time)

您正在调用区间内的区间。。。。等

您每分钟都会定期运行该函数,每次运行该函数时都会设置一个新的间隔,循环到infnty及以后。

将区间放在函数之外,并用函数调用它以避免求值,比如:

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);
}​