1 每隔05s随机让一个色块变为绿色非饱和色2 仔细观察1实现效果进行优化实现33 随机让背景为白色的色块变为绿色4 当所有色块均变为绿色时弹框警告结束并清除定时器
@2 优化方案:
- 使用定时器 setInterval() 方法代替 setTimeout() 方法,以便每隔一定时间触发一次颜色变化。
- 在每次变化前,先判断背景色是否为白色,如果是才进行变化。
- 使用数组来存储所有色块的状态,例如使用0表示白色,1表示绿色。
- 当所有色块均为绿色时,清除定时器并弹框警告。
下面是一个实现@3的示例代码:
HTML:
<div id="block1" class="block"></div>
<div id="block2" class="block"></div>
<div id="block3" class="block"></div>
<div id="block4" class="block"></div>
CSS:
.block {
width: 100px;
height: 100px;
background-color: white;
display: inline-block;
margin-right: 10px;
}
JavaScript:
const blocks = ["block1", "block2", "block3", "block4"];
let timer;
function changeColor() {
const randomIndex = Math.floor(Math.random() * blocks.length);
const blockId = blocks[randomIndex];
const block = document.getElementById(blockId);
if (block.style.backgroundColor === "white") {
block.style.backgroundColor = "green";
blocks[randomIndex] = "green";
}
if (blocks.every((block) => block === "green")) {
clearInterval(timer);
alert("结束");
blocks.fill("white");
}
}
timer = setInterval(changeColor, 500);
这段代码会每隔0.5s随机选择一个色块,如果该色块的背景色为白色,则将其变为绿色,并将对应的数组元素也设为绿色。当所有色块都变为绿色时,清除定时器,弹出警告,并将数组重新填充为白色
原文地址: https://www.cveoy.top/t/topic/iqFF 著作权归作者所有。请勿转载和采集!