@2 优化方案:

  1. 使用定时器 setInterval() 方法代替 setTimeout() 方法,以便每隔一定时间触发一次颜色变化。
  2. 在每次变化前,先判断背景色是否为白色,如果是才进行变化。
  3. 使用数组来存储所有色块的状态,例如使用0表示白色,1表示绿色。
  4. 当所有色块均为绿色时,清除定时器并弹框警告。

下面是一个实现@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随机选择一个色块,如果该色块的背景色为白色,则将其变为绿色,并将对应的数组元素也设为绿色。当所有色块都变为绿色时,清除定时器,弹出警告,并将数组重新填充为白色

1 每隔05s随机让一个色块变为绿色非饱和色2 仔细观察1实现效果进行优化实现33 随机让背景为白色的色块变为绿色4 当所有色块均变为绿色时弹框警告结束并清除定时器

原文地址: https://www.cveoy.top/t/topic/iqFF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录