我有12个彩色方块,点击一个按钮时,随机选择6个,背景颜色变为黑色。代码循环外执行第一个
正方形都在同时改变颜色,直到我添加了setTimeout函数,该函数修复了该问题但又导致了另一个问题 - 循环之外的代码在循环之前执行,即调用Reset函数和警报。
for (var i = 0; i < 6;i++)
{
setTimeout(function()
{
var rand = arr[Math.floor(Math.random() * arr.length)];
var square = document.getElementById('square' + rand);
square.style.background="black";
},1000 * i);
}
Reset()
alert("Reset function")
我认为setTimeout函数在某种程度上导致了这种情况 - 有没有办法解决这个问题?
谢谢。
是不是超时的目的是什么? –
严重的是,我不明白你的问题,因为你描述的是完全超时的目的,推迟执行任何代码或功能 –
是的,我明白,正如我所说的,它在这方面工作正常,但造成首先执行循环外的代码。复位功能并不意味着要在循环执行之后调用。 – user3047072