我试图创建一个页面,其中背景循环遍历每个十六进制值(从#000000到#FFFFFF)。这是JS的功能,我使用:Javascript在递归函数内部不改变CSS,直到递归结束
function Colours(count)
{
count +=1;
if (count > 16777215)
{
count = 0;
}
hex = count.toString(16);
while (hex.length < 6)
{
hex = "0" + hex;
}
hex = "#" + hex;
document.body.style.background = hex;
window.setTimeout(Colours(count),10);
}
当点击一个按钮,并给出说法它被称为-1(所以第一个十六进制值#000000)。
经过一些诊断后,似乎它只会在递归结束时改变颜色(在这种情况下,我假设它一旦达到其在#006446处的“堆栈限制”)。在将背景颜色更改为所达到的最终十六进制代码之前,此函数将简要处理。我怎样才能让它在每次进入函数时改变颜色,而不是在最后完成堆栈。
DOM不会在while/for循环中更新。应该怎么做,以setTimeout – epascarello
改变'window.setTimeout(Colors(count),10); 'to'window.setTimeout(function(){Colors(count)},10); ' –
这是因为'document.body.style.background = hex;'设置背景颜色并在循环之后调用。 – coderodour