2013-08-29 55 views
0

我想倒數計時器的格式爲hh:mm:ss,所以我用這段代碼將秒數轉換成所需的格式,但是當我倒數時它顯示我NaN。你能告訴我什麼,我做錯了 這裏是代碼Countdown HH:MM:SS Jquery

<div id="timer"></div> 

JS

String.prototype.toHHMMSS = function() { 
    var sec_num = parseInt(this, 10); // don't forget the second parm 
    var hours = Math.floor(sec_num/3600); 
    var minutes = Math.floor((sec_num - (hours * 3600))/60); 
    var seconds = sec_num - (hours * 3600) - (minutes * 60); 

    if (hours < 10) { 
     hours = "0" + hours; 
    } 
    if (minutes < 10) { 
     minutes = "0" + minutes; 
    } 
    if (seconds < 10) { 
     seconds = "0" + seconds; 
    } 
    var time = hours + ':' + minutes + ':' + seconds; 
    return time; 
} 

var count = '62'; 
count = count.toHHMMSS(); 

var counter = setInterval(timer, 1000); 

function timer() { 

    count--; 
    if (count <= 0) { 
     clearInterval(counter); 
     return; 
    } 

    $('#timer').html(count); 
} 

這裏的jsfiddle鏈接CountDown Timer

+0

你可能要檢查這一點,是基於轉換爲HH秒:MM: ss''可能重複'[這](http://stackoverflow.com/questions/1322732/convert-seconds-to-hh-mm-ss-with-javascript) –

回答

8

好吧,讓我們來看看你的代碼做什麼:

  • Set count t o字符串值62
  • 將其轉換爲HHMMSS,所以現在count等於字符串00:01:02
  • 啓動計時器。
  • 定時器第一次運行時,遞減count。呃... count是一個字符串,你不能減少它。結果不是一個數字。

好了,有了這樣的,路怎麼修復它:

function formatTime(seconds) { 
    var h = Math.floor(seconds/3600), 
     m = Math.floor(seconds/60) % 60, 
     s = seconds % 60; 
    if (h < 10) h = "0" + h; 
    if (m < 10) m = "0" + m; 
    if (s < 10) s = "0" + s; 
    return h + ":" + m + ":" + s; 
} 
var count = 62; 
var counter = setInterval(timer, 1000); 

function timer() { 
    count--; 
    if (count < 0) return clearInterval(counter); 
    document.getElementById('timer').innerHTML = formatTime(count); 
} 
+0

是的我知道我做錯了。 @Kinkink謝謝。 –

+0

@Arthur謝謝你解決「fromatting」:p這次我有點懶惰。 –

+0

@Kolink沒關係;)很高興幫助改善你的帖子。 :) – Arturs

1
var count = '62'; // it's 00:01:02 
var counter = setInterval(timer, 1000); 
function timer() { 
if (parseInt(count) <= 0) { 
    clearInterval(counter); 
    return; 
} 
var temp = count.toHHMMSS(); 
count = (parseInt(count) - 1).toString(); 
$('#timer').html(temp); 
} 

http://jsfiddle.net/5LWgN/17/