jQuery - clearInterval 似乎不起作用

jQuery - clearInterval seems not to work

长话短说:如果间隔计数超过 5,代码应清除间隔,停止每秒执行该函数。但这似乎不起作用。

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);
}

但我似乎找不到问题...

你需要 if 回调本身,比如

window.intervalcount = 0;

var interval = setInterval(function () {
    intervalcount += 1;
    $("#feedback").text(intervalcount);
    if(intervalcount > 5) {
        clearInterval(interval);
    }
}, 1000);

这是因为您的代码不会按顺序执行。相反,if 将在任何间隔执行之前执行,因为它们在 之后执行

您试图在设置后立即执行 clearInterval()。这发生在之前任何秒已经过去。首先你设置间隔,然后你检查是否有任何已经过去(他们没有)然后五秒后它 是时间来清除间隔 - 但到那时它已经 运行.

也许你打算在每次执行期间检查

var interval = setInterval(function () {
    if(intervalcount > 5) {
        clearInterval(interval);
    } else {
        intervalcount += 1;
        $("#feedback").text(intervalcount);
    }
}, 1000);

所以目前,您的代码将运行像这样的命令:

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);
}

在间隔的函数内将执行您想要的行为。