如果计数变为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);
});
答案 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); });