2013-02-05 30 views
0

我正在爲一個網站倒計時計時器 - 它實際上並沒有目的,它只是在那裏。所以基本上在午夜24小時開始,整天倒計時,再次在午夜重置。我有計時器工作,唯一的問題是,我想確保它永遠不會說「0小時,0分鐘」 - 它應該保持在1分鐘,直到它重置。我以爲我找到了一種方法,但我不知道它的工作:Javascript倒計時從不顯示0分鐘

var date = new Date(); 
var month = date.getMonth(); 
var day = date.getDate(); 
var dayOfWeek = date.getDay(); 
var hours = {start: new Date(date.getFullYear(), month, day), end: new Date(date.getFullYear(), month, day)}; 


updateCountDown(); 
$(document).ready(function(){ 
    setInterval('updateCountDown()', 1000); 
}); 

function updateCountDown(){ 
    var date = new Date(); 
    var hourDiff = 23 - date.getHours(); 
    var minDiff = 59 - date.getMinutes(); 


    $('span.hours').html(23-date.getHours()); 
    $('span.minutes').html(59 - date.getMinutes()); 

    if (hourDiff == 0 && minDiff == 0) { 
    minDiff = 1; 
    }; 
}; 

有沒有辦法來測試這個不用等到今晚午夜看看會發生什麼?我嘗試將updateCountDown中的新Date()更改爲新日期('2/5/13 4:30:00'),但它不起作用。

+0

難道你不能只是從下一個午夜減去當前時間,並顯示? – Jason

+1

切勿使用字符串參數['setTimeout'](https://developer.mozilla.org/en-US/docs/DOM/window.setTimeout)! – Bergi

+1

那些'hourDiff'和'minDiff'變量適合什麼?你從不使用它們進行顯示。 – Bergi

回答

1

在顯示它之後,您正在更新minDiff變量。

試試這個:

var date = new Date(); 
var month = date.getMonth(); 
var day = date.getDate(); 
var dayOfWeek = date.getDay(); 
var hours = {start: new Date(date.getFullYear(), month, day), end: new Date(date.getFullYear(), month, day)}; 


updateCountDown(); 
$(document).ready(function(){ 
    setInterval(updateCountDown, 1000); 
}); 

function updateCountDown(){ 
    var date = new Date(); 
    var hourDiff = 23 - date.getHours(); 
    var minDiff = 59 - date.getMinutes(); 

    if (hourDiff == 0 && minDiff == 0) { 
     minDiff = 1; 
    }; 

    $('span.hours').html(hourDiff); 
    $('span.minutes').html(minDiff); 
}; 
+0

謝謝你的幫助,這似乎工作完美。 –

0

要進行測試,只是new Date(2013, 01, 01, 23, 59, 50)更換您的來電new Date()updateCountDown方法。

並使用Marcus發佈的代碼。

+0

或改變你的操作系統時鐘。 – MarcusVinicius

+0

是的,這也會起作用,但它不會給你太多的測試時間! –

+0

當我這樣做時,它顯示了21小時和59分鐘,並且似乎並沒有真正倒計時。當我試圖改變之前的日期時,我遇到了同樣的問題,它從來沒有真正倒計時。 –