Javascript:如何随机更改背景?

Javascript:如何随机更改背景?,javascript,random,colors,Javascript,Random,Colors,我无法找出此代码的问题所在: <script> var colori = ['ffffff', 'ffbf00', 'ff4000', '4d79ff', '00c0ff', '00ff3f', 'ff7a4d', '00ff40', 'bf00ff', 'ff0040', 'ffd34d', 'a52a2a', 'bf00ff', '47adcf', '2a82a0' ]; var i; function CambiaColore(){ i

我无法找出此代码的问题所在:

<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>   

var colori=[‘ffffff’、‘ffbf00’、‘ff4000’、‘4d79ff’、‘00c0ff’、‘00ff3f’、‘ff7a4d’、‘00ff40’、‘bf00ff’、‘ff0040’、‘ffd34d’、‘a52a2a’、‘bf00ff’、‘47adcf’、‘2a82a0’];
var i;
函数CambiaColore(){
i=Math.floor(Math.random()*colori.length);
var colore='#'+colori[i];
document.body.style.background=colore;
setTimeout(CambiaColore(),2000);
};
CambiaColore();
谁能给我解释一下怎么回事吗?

设置超时(CambiaColore(),2000)错误

setTimeout(CambiaColore,2000)

说明:

SetTimeout的第一个参数应该是函数。你明白了。但是函数名后面的括号表示它的执行(我的糟糕英语,是)。因此,在您的例子中,它涉及到递归,仅此而已。最大堆栈调用数,错误。。所以我理解,您不需要在那里执行func,而是推迟它的执行。我在上面展示了正确的方法。

代码>设置超时(CambiaColore(),2000)错误

setTimeout(CambiaColore,2000)

说明:


SetTimeout的第一个参数应该是函数。你明白了。但是函数名后面的括号表示它的执行(我的糟糕英语,是)。因此,在您的例子中,它涉及到递归,仅此而已。最大堆栈调用数,错误。。所以我理解,您不需要在那里执行func,而是推迟它的执行。我在上面介绍了正确的方法。

另一种可能是将其包装在匿名函数中:

setTimeout ( function(){ CambiaColore() } , 2000 ) ;

另一种可能是将其包装在匿名函数中:

setTimeout ( function(){ CambiaColore() } , 2000 ) ;

你为什么认为有问题?请详细说明。你为什么认为有问题?请详细说明,好的。它可以使用原始函数contextYes。它可以使用原始函数上下文