Javascript 无法清除间隔

Javascript 无法清除间隔,javascript,jquery,Javascript,Jquery,如果计数变为3,我想终止使用setInterval创建的间隔。 我尝试了下面的代码,但它没有在if块内调用警报。为什么?我的比较是不正确还是有别的地方不对 $(window).load(function() { var timerId = 1; timerId = window.setInterval(function() { timerId = timerId + 1; if(timerId == '3') {

如果计数变为3,我想终止使用
setInterval
创建的间隔。 我尝试了下面的代码,但它没有在
if
块内调用
警报。为什么?我的比较是不正确还是有别的地方不对

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

您正在使用相同的变量存储整数值和返回的唯一间隔ID。因此,使用不同的变量,这可能会解决您的问题

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

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

不能对计数和间隔使用相同的变量,每次执行间隔中的回调时,计数都会更新为1,而
setInterval
函数会返回一个唯一的ID,稍后可以传递给
clearInterval
以清除该特定间隔,通过使用您的号码覆盖该ID,唯一ID将丢失,并且间隔将不再被清除

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

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

您所做的更改是什么?
setInterval
不返回对象。您应该使用
===
,因为
3=='3'
true
,但
3=='3'
false
。建议使用三重相等运算符,因为它还比较数据类型。Dude!考虑写下投票的评论…也许你可以解释<代码> SETIFATION/<代码>返回,这样就更清楚为什么原始代码不能工作了。@费利克林-呃,我至少可以试试!你能为我的上述问题给我一个好的标题吗?我会把它传给@FelixKling,因为我的英语(或标题)不太好。@adeneo:你认为我在这两个方面都更好吗P我可以试试。。。
$(window).load(function() {
     var timerId =1;
     timerCount = window.setInterval(function(){ 
     timerId=timerId+1; 
     if(timerId=='3'){ alert(timerId);  clearInterval(timerCount);}  
}, 2000);  });