JavaScript时钟:时间间隔冲突

JavaScript clock: time interval conflicts

本文关键字:冲突 时间 时钟 JavaScript      更新时间:2023-09-26

嗨,我是编程新手,正在开发JavaScript时钟。我让它根据是偶数分钟还是奇数分钟来改变背景颜色,它每小时都会改变文本颜色。然而,我在整合第三个任务时遇到了麻烦:我试图每五分钟将其更改为随机颜色,从而覆盖偶数或奇数语句。第1分钟:奇数,第2分钟:偶数,第3分钟:奇数,第4分钟:偶数,第5分钟:随机颜色。

因为每五分钟更改一次背景颜色的函数(第75行到83行)设置了一个间隔,这与获取日期的间隔设置(第71行)冲突。

现在,在Task 1被注释掉之前,Tasks 2和3的效果是不可见的。是否有一种方法可以将Task 1与第11-24行中的if/else语句结合起来,这样我的所有任务都可以并发运行?

使用单个计时器函数执行所有事件。要获得更精确的计时,请将计时器设置为每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来控制执行哪些任务。你的时钟秒更新也会更准确,不会像1000毫秒的计时器那样"跳过"秒。