clearTimeout()里面的setTimeout()方法在JS中不起作用

时间:2013-03-15 17:24:03

标签: javascript timer settimeout

clearTimeout()内部setTimeout()方法无法在JavaScript中使用

var c = 0;
var t;

function timedCount() {
    document.getElementById('txt').value = c;
    c = c + 1;
    if (c == 5) {
        clearTimeout(t);
    }
    t = setTimeout(function () {
        timedCount()
    }, 1000);
}

jsFiddle

2 个答案:

答案 0 :(得分:6)

您需要阻止执行其余代码,实际上您在清除t后重新声明setTimeoutFiddle

var c = 0;
var t;

function timedCount() {
    document.getElementById('txt').value = c;
    c = c + 1;
    if (c == 5) {
        clearTimeout(t);
        return false;
    }
    t = setTimeout(timedCount, 1000);
}

或者只使用else声明:

if (c == 5) {
  clearTimeout(t);
  // do something else
}else{
  t = setTimeout(timedCount, 1000);
}

答案 1 :(得分:1)

当您致电clearTimeout时,永远不会有超时清除,因为最后一个已经被解雇,而下一个尚未设置。

您希望更改逻辑以便if (c !== 5) { setTimeout(etc etc) }