2012-12-27 21 views
2

所以我有我創造了這個倒數計時器,如何修復JavaScript的倒計時秒錯誤

<script type="text/javascript"> 
var interval; 
    var minutes = 12; 
    var seconds = 32; 
    window.onload = function() { 
     countdown('countdown'); 
} 

function countdown(element) { 
    interval = setInterval(function() { 
     var el = document.getElementById(element); 
     if(seconds == 0) { 
      if(minutes == 0) {    
       minutes=7; 
seconds=47; 
       } else { 
        minutes--; 
        seconds = 60; 
       } 
      } 
      if(minutes > 0) { 
       var minute_text = minutes + (minutes > 1 ? ':' : ':'); 
      } else { 
       var minute_text = ''; 
      } 
      var second_text = seconds > 1 ?'':''; 
      el.innerHTML = minute_text + ''+seconds + ' '+second_text + ' remaining'; 
      seconds--; 
     }, 1000); 

} 
</script> 

結果完美地工作,但是當計時器達到低於10個數字,(12:03,12:05,等)它顯示前面沒有'0'的秒。 (12:3而不是12:03)

我試過修復這個,但它給我帶來了無處。有沒有可能以某種方式編輯我的腳本來修復這個錯誤?

+1

可能重複[我怎樣才能使用JavaScript創建一個Zerofilled值?] (http://stackoverflow.com/questions/1267283/how-can-i-create-a-zerofilled-value-using-javascript) – sachleen

回答

1
second_text = (seconds > 9) ? (seconds) : ('0' + seconds); 
+1

是什麼'(S)'? – sachleen

+0

s =秒,我複製它從一個倒計時劇本我寫了:) –

+0

我明白了,但OP可能不會。 +1爲最簡單的答案。 – sachleen

1

一個數字前面沒有零。

你必須手動添加。

if(seconds < 10) { 
    second_text = "0" + seconds; 
} 
+0

我知道,但我不知道w在這裏添加該行代碼。我試圖在結合分鐘和秒的行之間加上「0」,但它不起作用。 –

+0

你不應該像這樣使用parseInt。 – andlrc

+0

@NULL,爲什麼? – Neal

0

嘗試加入的功能來填充值顯示

function padvalue(i) { 
    if (i<10) { 
     i="0" + String(i); 
    } 
    return i; 
} 

這裏稱之爲

el.innerHTML = minute_text + '' + padvalue(seconds) + ' ' + second_text + ' remaining'; 
0

使用此代碼段將數字轉換爲字符串:

var secondStr = seconds + ""; 
while (secondStr.length < 2) { 
    secondStr = "0" + secondStr; 
} 

對分鐘和小時做同樣的事情然後打印字符串。

(你知道做間隔1000意味着間隔將會是1000或更多毫秒?儘管這個時間間隔很長,但你不可能錯過整個時間,這意味着計數器將接近實時秒,但不準確,會時常發生變化的時間和計算機到計算機)

1

我剛擦洗了你的代碼位:

var interval, 
    minutes = 12, 
    seconds = 32; 

window.onload = function() { 
    countdown('countdown'); 
} 

function countdown(element) { 
    var el = document.getElementById(element), 
     minutes_text, second_text; 

    interval = setInterval(function() { 
     if(seconds == 0) { 
      if(minutes == 0) { 
       minutes=7; 
       seconds=47; 
      } 
      else { 
       minutes--; 
       seconds = 60; 
      } 
     } 

     minutes_text = minutes; 
     second_text = (seconds < 10 ? "0" : "") + seconds; 

     el.innerHTML = minutes_text + ':' + second_text + ' remaining'; 
     seconds--; 
    }, 1000); 
}