未清除Javascript设置间隔
由于某些原因,计时器未从以下代码中清除:未清除Javascript设置间隔,javascript,Javascript,由于某些原因,计时器未从以下代码中清除: var countdown = function() { if (!interval || !countdownOngoing) { countdownOngoing = true; interval = setInterval(countdownFunction, 1000); } }; function countdownFunction() { if(seconds == 0) {
var countdown = function() {
if (!interval || !countdownOngoing) {
countdownOngoing = true;
interval = setInterval(countdownFunction, 1000);
}
};
function countdownFunction() {
if(seconds == 0) {
if (minutes == 0) {
countdownOngoing = false;
clearInterval(interval);
return;
} else {
minutes--;
seconds = 60;
}
}
seconds--;
}
在clearInterval之后,setInterval仍在工作。我遗漏了什么?假设它看起来像我在下面写的,那可能是你的分秒逻辑
var interval = null,
countDownGoing = false;
function countdown() {
if(!interval || !countDownGoing) {
interval = setInterval(countdownFunction, 1 * 1000);
countDownGoing = true;
}
}
countdown()
setTimeout(function() {
countDownGoing = false;
}, 5 * 1000);
function countdownFunction() {
if(!countDownGoing) {
clearInterval(interval);
} else {
alert(countDownGoing);
}
}
interval
定义在哪里?@Phil看起来interval是绑定到windowputvar interval的全局变量代码>在函数外部将分钟和秒的值打印到控制台,看起来clearInterval从未被调用这里的seems正常工作:。我不确定我的JSFIDLE和你的真实代码有什么不同。您并没有将所有变量都声明为全局变量(如果需要全局变量,这是一种更安全的编码方式),但我不确定这是否真的是问题所在。