2013-03-15 69 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) }