JavaScript时钟:时间间隔冲突

时间:2015-09-28 01:16:27

标签: javascript setinterval clock

嗨,我是编程新手,正在研究JavaScript时钟。我得到它来改变背景颜色取决于它是偶数还是奇数分钟,并且它每小时改变文本颜色。但是,我在第三个任务中遇到了麻烦:我试图让它每隔五分钟变成一个随机颜色,从而覆盖偶数或奇数语句。分钟1:奇数,分钟2:偶数,3:奇数,4:偶数,5:随机颜色。

由于每隔五分钟(lines 75 to 83)更改背景颜色的功能在一个间隔上设置,这与获取日期(line 71)的间隔冲突。

现在看来,在任务1被注释掉之前,任务2和3的效果是不可见的。是否有办法将任务1与第11-24行的if / else语句结合起来,以便我的所有任务可以同时运行?

1 个答案:

答案 0 :(得分:0)

使用单个计时器功能执行所有事件。要获得更准确的计时,请将计时器设置为每100毫秒执行一次并维护计数器。根据计数器值,您可以以不同的间隔执行特定任务,并检查间隔的重叠。当计数器达到您需要跟踪的最大间隔时,可以重置该计数器。

以下是一个示例:

var counter = 0;
var oldsec = 0;
setInterval(function(){timerInt()}, 100);

function timerInt(){
    // Read system clock and get seconds
    if (seconds <> oldsec) {
        // Update clock time here and set oldsec=seconds
    }


    // Execute other tasks
    if (counter % 3000 == 0) {  // Executes once every 5 minutes (300*10)

    }
    else if (counter % 1200 == 0) {  // Executes once in 2 minutes (120*10)

    }
    else if (counter % 600 == 0) {  // Executes once a minute (60*10)

    }

    counter += 1;
    if (counter == 3000) counter = 0;
}

您可以使用ifelse来控制要执行的任务。您的时钟秒更新也将更准确,并且不会跳过&#34;跳过&#34;像1000毫秒计时器那样的秒。