我有这个循环可以正常工作:

function countdown(counter) {
    x = counter;
    if (x > 0) {
        x--;
        alert(x + "/5");
        if (x > 0) {
            setTimeout(function () {
                countdown(x);
            }, 500);
        }
    }
};

countdown(6);

但我希望能够杀死它,然后通过按下按钮重新启动它。我想重新开始循环,不管我按下按钮时它的数字是多少。

在过去的几个小时里我无处可去。

这是一个 jsfiddle:http://jsfiddle.net/4vtPH/4/

最佳答案

您可以使用 clearTimeout (documentation)

var timeout;
function countdown(counter) {
    x = counter;
    if (x > 0) {
        x--;
        alert(x + "/5");
        if (x > 0) {
            timeout = setTimeout(function () {
                countdown(x);
            }, 2000);
        }
    }
};
$('input').click(function() {
    clearTimeout(timeout);
    countdown(6);
});
countdown(6);

Fiddle

关于jquery - 如何杀死 javascript setTimeout 循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17936345/

10-11 22:30