jQuery - clearInterval似乎不工作
问题描述:
长话短说:如果间隔计数超过5,代码应清除间隔,从而阻止它每秒执行一次函数。但这似乎并不奏效。jQuery - clearInterval似乎不工作
HTML
<div id='feedback'></div>
的JavaScript/jQuery的
window.intervalcount = 0;
var interval = setInterval(function() {
intervalcount += 1;
$("#feedback").text(intervalcount);
}, 1000);
if(intervalcount > 5) {
clearInterval(interval);
}
但我似乎无法找到问题...
答
所以目前,您的代码将类似这样的顺序运行的东西:
window.intervalcount = 0;
// Interval is defined here
var interval = setInterval(function() {
intervalcount += 1;
$("#feedback").text(intervalcount);
}, 1000);
// will be 0 still
if(intervalcount > 5) {
clearInterval(interval);
}
// 1 second after the interval is defined:
intervalcount += 1; // now equals 1
$("#feedback").text(intervalcount);
// 2 seconds after defined:
intervalcount += 1; // now equals 2
$("#feedback").text(intervalcount);
// etc, forever
配售:
if(intervalcount > 5) {
clearInterval(interval);
}
间隔的功能将执行所需的行为中。
答
您需要if
回调中本身就像
window.intervalcount = 0;
var interval = setInterval(function() {
intervalcount += 1;
$("#feedback").text(intervalcount);
if(intervalcount > 5) {
clearInterval(interval);
}
}, 1000);
这是因为您的代码不会按顺序执行。相反,之前因为它们执行后
答
你试图设置后立即执行clearInterval()
任何间隔时间执行该if
将执行。发生这种情况之前任何秒钟已过。首先你设置了间隔,然后你检查是否有任何已经过去(他们没有),然后五秒钟后它将是时间来清除间隔 - 但到那时它已经运行。
也许你的意思是检查期间执行每次?
var interval = setInterval(function() {
if(intervalcount > 5) {
clearInterval(interval);
} else {
intervalcount += 1;
$("#feedback").text(intervalcount);
}
}, 1000);
+0
“你在执行clearInterval()后立即执行” - 实际上根本不执行它,因为执行'if'语句时'intervalCount'为'0'。 –
这是因为对于intervalcount的原始检查只执行一次,通过将该检查放入setInterval回调中,每次调用该间隔时都会执行该检查。 – Charlie