【发布时间】:2021-03-11 23:13:28
【问题描述】:
所以我有这个代码块,我需要 div 的颜色在紫色和白色之间“闪烁”以用于条件“MECHANIC ON LINE”。我知道在 switch 语句之外我正在实现的代码正常工作,但在 switch 语句中我不确定。这也是在公司服务器上,我不确定后端的某些进程如何处理页面的更新。无论如何,如果有人知道我在 switch 语句中实现我的代码是否不正确,请告诉我。此外,代码的第一个 sn-p 取自下面更大的 sn-p,它是我关心的 switch 语句的一部分。最后,我还想提一下,我已经将时间间隔设置为彼此不同的整数,例如“setInterval(function, 10 * 1000), setInterval(function, 20 * 2000)”。
case "MECHANIC ON LINE":
colorTitle[i].style.color = 'rgb(127.5, 127.5, 127.5)';
if(colorBackground[l].style.background === 'rgb(123,31,162)') {
setInterval(colorBackground[l].style.background = 'rgb(255,255,255)',10 * 1000);
} else {
setInterval(colorBackground[l].style.background = 'rgb(123,31,162)',10 * 1000);
}
break;
for(var i = 0; i < colorTitle.length; i++) {
for(var l = i; l < colorBackground.length; l++) {
switch(colorTitle[i].textContent) {
case "RUNNING":
colorTitle[i].style.color = 'rgb(0, 255, 0)';
colorBackground[l].style.background = 'rgb(0, 255, 0)';
break;
case "LINE DOWN":
colorTitle[i].style.color = 'rgb(255, 0, 0)';
colorBackground[l].style.background = 'rgb(255, 0, 0)';
break;
case "OFFLINE":
colorTitle[i].style.color = 'rgb(127.5, 127.5, 127.5)';
colorBackground[l].style.background = 'rgb(127.5, 127.5, 127.5)';
break;
case "MECHANIC ON LINE":
colorTitle[i].style.color = 'rgb(127.5, 127.5, 127.5)';
if(colorBackground[l].style.background === 'rgb(123,31,162)') {
setInterval(colorBackground[l].style.background = 'rgb(255,255,255)',10 * 1000);
} else {
setInterval(colorBackground[l].style.background = 'rgb(123,31,162)',10 * 1000);
}
break;
default:
colorTitle[i].style.color = 'rgb(255, 255, 255)';
colorBackground[l].style.background = 'rgb(255, 255, 255)';
break;
}
}
}
【问题讨论】:
-
这听起来更适合基于类的动画而不是手动控制颜色,这可能吗?
-
我同意,但这需要对许多其他代码进行重组,这可能不是一个选项。另外我认为,即使它是基于类的动画,它仍然可能在 switch 语句中遇到同样的问题。
标签: javascript if-statement switch-statement setinterval