2011-11-06 22 views
2

我正在嘗試在JavaScript中創建一個簡單的計時器,該計時器在按下按鈕時從5倒數到0。這是我用於按鈕點擊的功能。雖然我沒有倒計時,但我仍然陷入困境。任何暗示我的邏輯錯誤的地方都會被記錄下來。謝謝。在Javascript中使用setTimout的簡單計時器

function countdown(num) { 
    if (num >= 0) { 
     document.getElementById("counter").innerHTML=num; 
     timer=setTimeout("countdown()", 1000); 
     num--; 
    } 
    else 
     clearTimeout(timer); 
} 

回答

6

的主要問題是你的countdown評價爲字符串未正確傳遞num一起。嘗試使用函數表達式。

function countdown(num) { 
    if (num >= 0) { 
     document.getElementById("counter").innerHTML=num; 
     setTimeout(function() { countdown(num - 1) }, 1000); 
    } 
} 

而且也沒有必要對clearTimeout或全局timer值。

+0

也沒有一個需要'timer'變量,或'NUM - ',對嗎? –

+0

@DougOwings對兩者都正確。將更新 – JaredPar

+0

邏輯錯誤沒有傳入'num',但是在這裏使用字符串是可以接受的,因爲它只是在它上面調用eval():'setTimeout(「countdown(」+(num-1)+ 「)」,1000);' – Tim

1

這個怎麼樣?

button.onclick = function() { 
    var n = 5; 

    (function loop() { 
     label.textContent = n; 

     if (n > 0) { 
      n -= 1; 
      setTimeout(loop, 1000); 
     } 
    })(); 
}; 

現場演示:http://jsfiddle.net/YhBx6/1/