未清除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是绑定到windowput
var interval的全局变量在函数外部将分钟和秒的值打印到控制台,看起来clearInterval从未被调用这里的seems正常工作:。我不确定我的JSFIDLE和你的真实代码有什么不同。您并没有将所有变量都声明为全局变量(如果需要全局变量,这是一种更安全的编码方式),但我不确定这是否真的是问题所在。