0

这是我的代码.... http://jsfiddle.net/KQ8gW/ 在此我已将 setTimeout 设置为 1 分钟,但在此之前调用了该函数。为什么会这样????

4

3 回答 3

2

您正在立即调用该函数,而不是传递对该函数的引用,并且您正在重复设置间隔。因此,您传递给setInterval()的是 execution 的返回值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/

于 2012-08-05T16:55:35.733 回答
0

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

于 2012-08-05T16:55:02.050 回答
0

你在一个区间内的区间内调用一个区间......等等。

您每隔一分钟定期运行该函数,并且每次运行该函数时,您都会设置一个新的间隔,循环直到无穷大或更长。

将区间放在函数之外,并用函数调用它以避免 eval'ing,如下所示:

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 回答