我正在使用jQuery Countdown插件并快速查询。
我的代码目前看起来像这样:
function doCountdown(){
var nextNoon = new Date();
if (nextNoon.getHours()>=12){ nextNoon.setDate(nextNoon.getDate()+1); }
nextNoon.setHours(11,30,0,0);
$('h3 .timer strong').countdown({until: nextNoon, compact: true,
description: '', onExpiry: function(){doCountdown()}});
}
$(window).load(function(){
doCountdown();
});
所以基本上,它倒计时直到下一个11:30AM
。但是我需要它在计数器达到11:30AM
时重置计数器,因此它会自动转到计时器上的23:59:59
。
目前,即使00:00:00
函数被称为doCountdown
(使用onExpiry
进行测试并且肯定会调用它),它仍然只是console.log
。
是因为javascript基于页面加载的时间,然后存储它?
答案 0 :(得分:1)
原因是因为您的nextNoon
创建错误计算时间为上午11:30至中午12:00。对于那半个小时的时间段,if()
将评估为false,因此它将时间设置为当天的上午11:30。但是我们已经过了那段时间,因为我们的时间是上午11:30到12点。所以倒计时只会归零。
您需要执行以下操作:
var todaysNoon = new Date(), nextNoon = new Date();
todaysNoon.setHours(11,30,0,0);
if (todaysNoon <= nextNoon){ nextNoon.setDate(nextNoon.getDate()+1); }
nextNoon.setHours(11,30,0,0);