8

clearTimeout()setTimeout()JavaScriptで動作しないinsideメソッド

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

4

2 に答える 2

10

残りの実行コードを防ぐ必要があります。実際には、tをクリアした後に再宣言しsetTimeoutます。フィドル

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);
}
于 2013-03-15T17:30:29.440 に答える
1

clearTimeout最後の1つはすでに起動されており、次の1つはまだ設定されていないため、電話をかけたときにクリアするタイムアウトはありません。

ロジックを変更して、if (c !== 5) { setTimeout(etc etc) }

于 2013-03-15T17:30:48.333 に答える