2012-03-19 59 views
0

我從網絡中的代碼片斷做出了這個小函數。它做它預計要做的事情,除了每倒計時滴答而不是一滴,它會減少2秒,如果我刷新頁面,它會再次回到原來的時間。你們可以看看問題是什麼嗎?jquery日期差異問題

   jQuery.countdown = function(selector, datevalue) { 

       var amount = datevalue*1000; 

       var curdate = new Date(); 
       curdate  = curdate.getTime(); 

       var difference = amount - curdate; 


       if(amount < 0 || curdate >= amount){ 
        $(selector).html("Done"); 
       } 


       else{ 
        datevalue--; 

        var daysRemaining = Math.floor(difference/1000/60/60/24); 
        var hoursRemaining = Math.floor(difference/1000/60/60 - (24 * daysRemaining)); 
        var minutesRemaining = Math.floor(difference/1000/60 - (24 * 60 * daysRemaining) - (60 * hoursRemaining)); 
        var secondsRemaining = Math.floor(difference/1000 - (24 * 60 * 60 * daysRemaining) - (60 * 60 * hoursRemaining) - (60 * minutesRemaining)); 

        $(selector).html(daysRemaining+':'+hoursRemaining+':'+minutesRemaining+':'+secondsRemaining); 
        setTimeout(function() { 
         $.countdown(selector, datevalue); 
        }, 1000); 
       } 
}; 




$.countdown('.date', 1332239568); 

回答

1

刪除datevalue--;

你現在正在做的是下降到一個特定時期的時間datevalue計數。但是,你每減少一秒就會減少它。同時,當前時間在setTimeout中傳遞,所以你們都在向前移動並將目標拉向自己。

要麼保留第一個電話的原始curdate,保存在某個地方。或者刪除datevalue--;

+0

這是最明顯的事情,找不到任何理由爲什麼我監督它。謝謝Ekin :) – 2012-03-19 11:25:48