3 回答

TA貢獻1848條經(jīng)驗 獲得超2個贊
您需要從 changeColor() 函數(shù)中取出 setInterval() 函數(shù)。您正在為每個后續(xù)的 changeColor() 遞歸調(diào)用創(chuàng)建一個新的間隔,這就是導(dǎo)致速度加快直到我們變得癲癇的原因。加上其他人提到的更具體的選擇器('.grid-container > div')。這可能以反應(yīng)式風(fēng)格更好地完成,而不是每秒循環(huán)遍歷一組元素,但如果你剛剛接觸 html/js/css,這是一個非常好的小測試。我可能會做更多這樣的事情:
var r = Math.round(Math.random()*255);
var g = Math.round(Math.random()*255);
var b = Math.round(Math.random()*255);
var myTimer;
function startSwitching() {
myTimer = setInterval(changeColor, 1000);
}
function stopSwitching() {
clearInterval(myTimer);
}
function changeColor(){
for (const elem of document.querySelectorAll('.grid-container > div')) {
r = Math.round(Math.random()*255);
g = Math.round(Math.random()*255);
b = Math.round(Math.random()*255);
elem.style.backgroundColor = "rgb("+r+","+g+","+b+", 0.8)";
}
}
您需要小心使用間隔并確保自己清理干凈,否則可能會使瀏覽器崩潰。另外,你并沒有真正問一個問題,所以不清楚你到底想改變什么。

TA貢獻1802條經(jīng)驗 獲得超6個贊
加入document.querySelectorAll('.grid-container > div')
for循環(huán),這樣只有里面的divgrid-container
才會變色。

TA貢獻1789條經(jīng)驗 獲得超10個贊
document.querySelectorAll('div')實際上返回一個元素列表。為了更改樣式,您需要遍歷元素。這是您可以執(zhí)行此操作的一種方法:
for (const elem of document.querySelectorAll('.grid-container > div')) {
r = Math.round(Math.random()*255);
g = Math.round(Math.random()*255);
b = Math.round(Math.random()*255);
elem.style.backgroundColor = "rgb("+r+","+g+","+b+")";
}
添加回答
舉報