我有这样的循环,工作好:如何杀死一个javascript的setTimeout循环
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/
全局状态似乎是唯一的答案。 – Ven
在某处保存'setTimeout'的返回值。调用'clearTimeout',然后重新调用'countdown(6);'。 –
不确定,但setInterval在你的情况下可能会更好? https://developer.mozilla.org/en-US/docs/Web/API/window.setInterval它也有一个类似于超时的清晰方法 – house9