2013-03-15 70 views
2

clearTimeout()setTimeout()方法在JavaScript中不工作clearTimeout()内setTimeout()方法不是JS工作

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

+5

它做“工作”,而是你的逻辑是不正确。在你调用'clearTimeout'之后,你再次调用'setTimeout'。不要调用'clearTimeout',而应该退出该函数。 – 2013-03-15 17:26:49

+0

在这里看@felix指向http://jsfiddle.net/SEGtY/7/ – 2013-03-15 17:28:17

+0

谢谢@RodrigoAssis .... – 2013-03-15 17:36:20

回答

3

您需要防止执行的代码的其余部分,其实你是在清除setTimeout后重新申报tFiddle

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

绝不会有超时清除,当你调用clearTimeout作为最后一个将已经解雇,下一个会不会有尚未设置。

你想改变你的逻辑,这样if (c !== 5) { setTimeout(etc etc) }