如何让这个倒计时工作周一,周二和其他人

时间:2015-12-22 23:49:48

标签: javascript

this post某人(royhowie)分享了一个对每个星期日都很重要的js。这段代码效果很好,但是当我尝试使它工作超过今天(当天),如星期二,星期一,通过将delta值从7更改为2或1,这个节目计时器已完成。如何使它工作?



var getNextSunday = function () {
    var today = new Date(),
        day = today.getDay(),	// 1 for Mon, 2 for Tue, 3 for Wed, etc.
        delta = 7 - day;

    var sunday = new Date(today.getTime() + (delta * 24 * 3600 * 1000));

    sunday.setHours(11);
    sunday.setMinutes(15);
    sunday.setSeconds(0);

    return sunday;
}

var t = getNextSunday(),
    p = document.getElementById("time"),
    timer;
var u = function () {
    var delta = t - new Date(),
        d = delta / (24 * 3600 * 1000) | 0,
        h = (delta %= 24 * 3600 * 1000) / (3600 * 1000) | 0,
        m = (delta %= 3600 * 1000) / (60 * 1000) | 0,
        s = (delta %= 60 * 1000) / 1000 | 0;
    
    if (delta < 0) {
        clearInterval(timer);
        p.innerHTML = "timer's finished!";
    } else {
        p.innerHTML = d + "d " + h + "h " + m + "m " + s + "s";
    }
}
timer = setInterval(u, 1000);
&#13;
<h1 id="time"></h1>
&#13;
&#13;
&#13;

解决

@ Reti43绅士你才是天才。很尊重你。

3 个答案:

答案 0 :(得分:1)

它不是您想要更改的数字7,而是指定给日期的值:

现有代码:

day = today.getDay(),   // 1 for Mon, 2 for Tue, 3 for Wed, etc.

你想:

day = 2,    // 1 for Mon, 2 for Tue, 3 for Wed, etc.

答案 1 :(得分:0)

只需将delta = 7 - day;更改为

即可
delta = (8 - day) % 7;

<强>解释

星期一的值为1,但这与1 + 7类似。

在计算8和今天的日期之间的差异后,使用模数得到0到6之间的余数。

示例

今天是星期天:(8 - 0)%7 = 8%7 = 1,即星期一是1天。

今天是星期一:(8 - 1)%7 = 7%7 = 0,即星期一是0天。

答案 2 :(得分:0)

这是一个棘手的问题。

而不是减少“7”,你必须添加它:

var getNextWeekday = function (nextDesirefWeekDay) { 
    var today = new Date(), 
    day = today.getDay(),   
    delta = 7 - day + nextDesirefWeekDay;
    ...

}

然后,在nextDesirefWeekDay中,你通过了你想要的一天:

0:星期天 1:星期一 2:星期二 ...

我希望有所帮助。