倒数计时器重置

时间:2015-09-16 17:54:41

标签: javascript jquery countdown

我之前制作了几个倒计时器,但需要稍微改动一下。我需要每周星期三倒计时。因此,当它到达星期三时,它会更新,并考虑将来的下周三,即将来的7天。

到目前为止,我使用了一个非常简单的代码块,占用了一些我害怕的空间:

    var td = new Date("Sep 16, 2015").getTime();
var days, hrs, mins, secs;

function recalc() {
    var curdate = new Date().getTime();
    var secsleft = (td - curdate) / 1000;

    days = parseInt(secsleft / 86400);
    secsleft = secsleft % 86400;

    hrs = parseInt(secsleft / 3600);
    secsleft = secsleft % 3600;

    mins = parseInt(secsleft / 60);
    secs = parseInt(secsleft % 60);
}

setInterval(function() {
    recalc();
    while(days<1 && hrs<1 && mins<1 && secs<1) {td.setDate(td.getDate() + parseInt(7)); recalc();}
    $("#countdown").html(days + " Days " + hrs + " Hours " + mins + " Mins " + secs + " Secs");
}, 1000);

我的问题是最后一行代码。我正在检查是否全部达到0或以下。在我目前的情况下,几个数字是负数,线不会触发。尽管如此,我还收到一条错误消息,指出td.getDate()不是函数。

编辑:我相当肯定我唯一剩下的问题是td.setDate(td.getDate() + parseInt(7));返回错误的原因:td.getDate()不是函数。

所有内容都正确触发,所需的只是在td(target_date)上添加7天,然后重新运行recalc()函数。

1 个答案:

答案 0 :(得分:0)

这不起作用:

if(days<1 && hrs<1 && mins<1 && secs<1) {td.setDate(td.getDate() + 7);}

因为逻辑上不能同时少于一个。一旦它们全部达到零,那一天就会切换到第二天。当天的最后一秒实际上是23:59:59。

你应该选择:

if(days=0 && hrs=0 && mins=0 && secs<2) {td.setDate(td.getDate() + 7);}

我认为这应该有助于部分内容。