2016-05-10 175 views
0

我試圖創建一個JavaScript計數器,開始於25分鐘,結束於0.這個想法是顯示分鐘/秒作爲頁面上的倒數時鐘(我的目標div被稱爲'txt' )。但是我沒有得到我想要的結果 - 定時器每次運行函數時都不會減去(每ms)。關於我要去哪裏的任何想法都是錯誤的?代碼如下:遞歸倒數計時器

function countdown() { 

    var target = 1500000; // 25 mins 
    var current = 1000; // 0 secs 

    for (var i=0; i<5; i++) { 
     var diff = target-current;   // calculates the 25 minutes 
     var min = Math.floor(diff/1000/60); //gets mins 
     var sec = (diff/1000) % 60;   // gets secs 
     current = current+1000; 

     document.getElementById("txt").innerHTML = min + ":" + sec; 
     var t = setTimeout(countdown, 2500);} 
    } 

} 
+2

的可能的複製(http://stackoverflow.com/questions/20618355/the -simplest-possible-javascript-countdown-timer) – dippas

+0

一旦你的問題得到解決,你應該只調用* setTimeout *如果'diff> = 0',否則它會不必要地運行。 – RobG

+0

@RobG - 謝謝。是的,將添加,以便它在差異達到0時停止。 – vaspv

回答

0

在這裏你去:

var target = 1500000; // 25 mins 
var current = 0; // 0 secs 
function countdown() { 
    current += 1000; 
    var diff = target-current;   // calculates the 25 minutes 
    var min = Math.floor(diff/1000/60); //gets mins 
    var sec = (diff/1000) % 60;   // gets secs 

    document.getElementById("txt").innerHTML = min + ":" + sec; 
    if (diff > 0) 
     setTimeout(countdown, 1000); 

} 

countdown(); 

的jsfiddle與運行例如:?最簡單的JavaScript的倒計時] https://jsfiddle.net/epcmw0uc/5/

+1

非常感謝!它現在有效。 – vaspv

+0

不客氣:) –

1

您需要定義當前函數的外部。目前您每次運行該功能時都將其重置爲1000。

+0

感謝您澄清。我懷疑(重置爲1000),但(錯誤地)認爲超時功能會照顧到這一點。 – vaspv