无法清除间隔

时间:2014-03-02 17:47:47

标签: javascript jquery

如果计数变为3,我想终止使用setInterval创建的间隔。 我尝试了下面的代码,但它没有调用alert块中的if。为什么?我的比较不正确还是其他错误?

 $(window).load(function() {
     var timerId = 1;
     timerId = window.setInterval(function() { 
        timerId = timerId + 1; 
        if(timerId == '3') { 
            alert(timerId);  
            clearInterval(timerId);
         }  
     }, 2000); 
 });

3 个答案:

答案 0 :(得分:7)

尽量不要为所有内容使用相同的变量

$(window).load(function() {
     var timerNum = 1,
         timerId  = window.setInterval(function(){ 
             timerNum++; 
             if( timerNum == 3 ){
                 clearInterval(timerId);
             }  
         }, 2000);  
});

您不能对计数和间隔使用相同的变量,计数是您自己更新的内容,每次执行时间间隔内的回调时添加1,而setInterval函数返回唯一ID稍后将传递给clearInterval以清除该特定时间间隔,并通过用您的号码覆盖该ID,唯一ID将丢失,并且无法再清除该时间间隔。

答案 1 :(得分:3)

$(window).load(function() {
     var timerId =1;
     timerCount = window.setInterval(function(){ 
     timerId=timerId+1; 
     if(timerId=='3'){ alert(timerId);  clearInterval(timerCount);}  
}, 2000);  });

您有两个具有相同名称的变量,更改其中一个变量名称以避免它们“冲突”。

答案 2 :(得分:1)

您使用相同的变量来存储整数值和唯一的区间ID返回window.setInterval。所以使用不同的变量来解决你的问题

$(window).load(function() {
     var timerId =1;
     var intId = window.setInterval(function(){ 
     timerId=timerId+1; 
     if(timerId=='3'){ alert(timerId);  clearInterval(intId);}  
}, 2000);  });