嗨,我是编程新手,正在研究JavaScript时钟。我得到它来改变背景颜色取决于它是偶数还是奇数分钟,并且它每小时改变文本颜色。但是,我在第三个任务中遇到了麻烦:我试图让它每隔五分钟变成一个随机颜色,从而覆盖偶数或奇数语句。分钟1:奇数,分钟2:偶数,3:奇数,4:偶数,5:随机颜色。
由于每隔五分钟(lines 75 to 83)更改背景颜色的功能在一个间隔上设置,这与获取日期(line 71)的间隔冲突。
现在看来,在任务1被注释掉之前,任务2和3的效果是不可见的。是否有办法将任务1与第11-24行的if / else语句结合起来,以便我的所有任务可以同时运行?
答案 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;
}
您可以使用if
和else
来控制要执行的任务。您的时钟秒更新也将更准确,并且不会跳过&#34;跳过&#34;像1000毫秒计时器那样的秒。