【发布时间】:2015-03-09 20:03:27
【问题描述】:
我正在尝试在不刷新浏览器的情况下在倒计时达到 0 时更新日期。
这是代码
var tdy = new Date();
var nxt = new Date();
var dd = new Date();
tdy.setHours(16,00,0,0);
nxt.setHours(16,00,0,0);
var month = new Array();
month[0] = "Jan";
month[1] = "Feb";
month[2] = "Mar";
month[3] = "Apr";
month[4] = "May";
month[5] = "Jun";
month[6] = "Jul";
month[7] = "Aug";
month[8] = "Sep";
month[9] = "Oct";
month[10] = "Nov";
month[11] = "Dec";
var mth = month[dd.getMonth()];
function doCountDown() {
if(tdy <= nxt){
nxt.setDate(nxt.getDate()+1);
dd.setDate(dd.getDate()+3);
if(dd.getHours() == 16){
dd.setDate(dd.getDate()+1);
}
}
$('#clock').countdown(nxt).on('update.countdown', function(event){
$('#delivered-date').text(dd.getDate()+' '+mth+' '+dd.getFullYear());
$(this).text(event.strftime('%H hr %M min %S sec'));
})
.on('finish.countdown', function(event){
setTimeout(doCountDown, 1000);
});
}
$(document).ready(function () {
doCountDown();
});
这是 jsfiddle,http://jsfiddle.net/2dot1geo/1/
要测试日期是否更新,只需将 dd.getHours 更改为 dd.getMinutes 并更改 var tdy 和 var nxt 的 2 个 setHours。
我已经使用 Minutes 进行了测试,以查看日期是否在不刷新浏览器的情况下更新,但它没有。
只有在我刷新浏览器后,日期才会更新。
那么我怎样才能改变它来工作呢?我需要更新倒计时达到 0 或达到我想要的时间的日期。没有浏览器刷新。
仅供参考, 如果倒计时达到 0 或达到 1600(下午 4 点),如果小时等于 16,则日期将 +1。因此,当它到达下午 4 点时,日期应该增加 1 天而不刷新浏览器。
【问题讨论】:
-
好吧,
setTimeout()需要一个函数作为第一个参数。看起来您正在向它传递一个 jQuery 选择 ($('#clock'))。这是行不通的。另外,你为什么使用clearInterval()?您没有使用任何间隔(超时与间隔不同)。 -
我明白了。我已经更新了 jsfiddle,jsfiddle.net/2dot1geo/1,但它仍然不会在不刷新浏览器的情况下更新日期。
标签: javascript jquery date countdown jquery-countdown