我通过网络上的代码片段创建了这个小功能。它做了它预期做的事情,除了它每倒计时滴答减少2秒而不是一个,如果我刷新页面它再次回到原始时间。你们能看出问题所在吗?
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);
答案 0 :(得分:1)
删除datevalue--;
您现在正在做的是倒数到特定的纪元时间datevalue
。但是,你每个滴答都会减少一秒钟。同时,当前时间在setTimeout中传递,因此您既可以向前移动又可以将目标拉向自己。
保留第一个电话的原始curdate
,保存在某处。或者删除datevalue--;
。