我无法找到此代码的问题所在:
<script>
var colori = ['ffffff', 'ffbf00', 'ff4000', '4d79ff', '00c0ff', '00ff3f', 'ff7a4d', '00ff40', 'bf00ff', 'ff0040', 'ffd34d', 'a52a2a', 'bf00ff', '47adcf', '2a82a0' ];
var i;
function CambiaColore(){
i = Math.floor(Math.random() * colori.length);
var colore = '#'+colori[i];
document.body.style.background=colore;
setTimeout(CambiaColore(),2000);
};
CambiaColore();
</script>
有人可以解释我的错误吗?
答案 0 :(得分:4)
setTimeout(CambiaColore(),2000);
错误
setTimeout( CambiaColore, 2000 );
对
说明:
SetTimeout的第一个参数应该是函数。你明白了但是函数名后面的括号意味着它的执行(我的英文不好,你)。因此,在你的情况下,它来到递归和所有。最大堆栈调用,错误..所以我理解,你不需要在那里执行func但是推迟执行。我在上面展示了如何做到这一点。
答案 1 :(得分:1)
另一种可能性是将其包装在匿名函数中:
setTimeout ( function(){ CambiaColore() } , 2000 ) ;