交替重复倒计时 - html - javascript

时间:2016-02-10 17:57:59

标签: javascript html countdown alternation

显然,这个问题有多个部分:一个用于倒计时,另一个用于显示。我希望周末倒计时(周六00:00),周末将显示周末结束时的倒计时(周一00:00)

首先是倒计时:我可以看到的方式是进入倒计时网站,然后使用然后就会出现,唯一的问题是这不适合背景,你必须滚动。所以你必须使用另一种方法。

其次是交替:我对此没有太多想法,但我必须考虑一些事情或者这是不合适的。所以,如果我想要改变两次。我可以将倒计时变为变量(x),然后你会测试x是否为0然后加一个y,当它是一个奇数时,显示5天倒计时(432000秒)然后当它是偶数然后显示2天倒计时(172800秒)所以这是我的(可能是失败的)尝试:

    if x=0 {
        if y=1 {
           var z=432000
        }
        else {
           var z=172000
        }
    }

我不知道这是否正确但我希望你欣赏我的尝试。提前谢谢!

1 个答案:

答案 0 :(得分:1)

因此,如果您正在尝试编写一个符合您要求的小型网络应用程序,那么它实际上并不要求您使用第三方计时器。你真正想要的是Date对象。然后,您可以使用它来检测当前时间和星期几,并使用它来确定a)您想要的计时器,以及b)计时器结束的时间。

var now = new Date;
var day = now.getDay(); // this returns a number from 0-6, where 0 is Sunday, going through the days of the week.
var month = now.getMonth();
var date = now.getDate();
var year = now.getFullYear();
var target_time; // this will be used to store the time at which the timer elapses
var day_offset; // this stores the number of days we need to offset by until we get to the end of the timer
if(day === 0 || day === 6){
    // it's the weekend!
    day_offset = (day === 0) ? 1 : 2;
    target_time = new Date(year, month, date+day_offset, 0, 0, 0);
} else {
    // it's a week day!
    day_offset = 6-day; // i think this will work!
    target_time = new Date(year, month, date+day_offset, 0, 0, 0);
}
var milliseconds_until_end = target_time.getTime() - Date.now();
// milliseconds_until_end is the number of milliseconds until the timer should end. 
// you can parse this in all sorts of ways, but for starters, you could do something 
// like this:
var seconds = Math.floor(milliseconds_until_end/1000);
var minutes = seconds/60;
var hours = minutes/60;
var extra_minutes = 60 * (hours - Math.floor(hours));
var extra_seconds = 60 * (extra_minutes - Math.floor(extra_minutes));
hours = Math.floor(hours);
extra_minutes = Math.floor(extra_minutes);
extra_seconds = Math.floor(extra_seconds);
// presumably we want to write all this somewhere!
var output = document.getElementById("output");
output.textContent = hours + ":" + extra_minutes + ":" + extra_seconds;

只是一句警告,我还没有测试过这些。您现在需要做的就是将所有这些代码放在setInterval中。要做到这一点,首先必须将所有上述代码包装在函数定义中(我们可以将其称为getTime函数)。

setInterval(getTime, 1); // this makes the getTime function trigger once every millisecond (not second as i had previously! my bad).