jQuery倒计时 - 重置计时器

时间:2011-10-07 10:45:56

标签: javascript jquery timer countdown

我正在使用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基于页面加载的时间,然后存储它?

1 个答案:

答案 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);