0

我过去认为,如果我创建一个变量,我可以简单地覆盖它们。我正在尝试执行以下操作:

var zoom = {
    $el : $('#Overlay'),
    nextTimer : null,
    activeDetail : -1,
    zo: null,
    init: function() {
       zoom.nextTimer = setInterval(zoom.nextLoop, 5000);
    },
    nextLoop: function() {
       console.log("zoom.nextLoop");        
    }          
}

    $(document).on('click', function(e){
        console.log("klick");
        zoom.init();
    }); 

并期望 zoom.nextTimer 将被覆盖。但这似乎是错误的,添加了一个新的计时器。我怎样才能覆盖它?

另请参阅http://jsfiddle.net/9FXu6/

4

2 回答 2

2

intervalID 是可以传递给 clearInterval() 的唯一间隔 ID。

https://developer.mozilla.org/en-US/docs/Web/API/window.setInterval

的返回值setInterval只是一个标识区间的数字。clearInterval如果要停止间隔再次运行该函数,则需要调用并将其作为参数传递。

var nextTimer = setInterval(func, time);
clearInterval(nextTimer);
于 2013-06-06T10:12:04.607 回答
0

您需要致电clearInterval(<reference to the timer>)以确保它不会再次执行。

您可能还有更多的运气setTimout,只被调用一次。

于 2013-06-06T10:12:26.290 回答