2013-04-26 80 views
-2

我想在h = 0時清除interverl; m = 0; s = 0;Javascript setInterval循環停止

該怎麼做......這是一直循環......

看看在不同的點碼

var h = 10; 
var m = 11; 
var s = 12; 


function countdown() { 

    h--; 
    m--; 
    s--; 

    var t = h + ":" + m + ":" + s; 

    document.getElementById("show").innerHTML = t; 


    if (h == 0 && m == 0 && s == 0) { 
     clearInterval(timer); 
    } 

} 

var timer = setInterval('countdown()',1000); 

countdown(); 
+0

什麼錯誤返回從您的瀏覽器上的控制檯? – 2013-04-26 12:34:08

+0

這是一個不好的做法,設置函數在設置的間隔作爲一個'字符串'執行,我建議你只寫'setInterval(countdown,1000);' – user1983983 2013-04-26 12:35:38

回答

3

使用您的病情是這樣

if (h > 0) 
h--; 
if (m > 0) 
m--; 
if (k > 0) 
s--; 

See Demo

2

hms達到0,所以他們從來都在等於零同一時間。

你需要做,以防止他們遞減低於0:

if (h) h--; 
if (m) m--; 
if (s) s--; 

現場演示:http://jsfiddle.net/Kn296/

1

hms不會0在同一時間,所以h == 0 && m == 0 && s == 0永遠不會是true

這就是爲什麼你的循環永遠不會停止。

1

這是因爲您的h,m和s值不會同時等於零。

0

H,M ANS s爲不爲0在同一時間。

所以你必須要檢查它們是否就等於或小於0更改您如果子句這樣的:

if(h <= 0 && m <= 0 && s <= 0){ 
    clearInterval(timer); 
} 

更新

我錯過了,你要顯示的號碼在屏幕上...
那麼你應該只decrese變量,如果他們是大於0

if(h>0) h--; 
if(m>0) m--; 
if(s>0) s--; 
+0

這將顯示負值 – Curt 2013-04-26 12:39:09

+0

哦對...我錯過了。對不起 – tschulze 2013-04-26 12:40:38