2012-03-19 57 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