如何在不收到“太多递归”错误的情况下不断更改背景颜色?

时间:2016-08-23 18:33:27

标签: html

如何不断更改背景颜色? 我的以下代码导致“递归太多”错误“。

<html>
<body id = "BGCOLOR" bgcolor = rgb(0,0,0); >
<script>
function ChangeColor(){
    document.body.style.backgroundColor = "rgb(Math.random(255),Math.random(255),Math.random(255))";
    setTimeout(ChangeColor(),3000);
}
ChangeColor();
</script>
</body>
</html>

1 个答案:

答案 0 :(得分:1)

setTimeout接受一个函数,但你正在调用函数本身。所以,你只需要传递它ChangeColor(没有括号)。此外,Math.random()返回一个浮点数,然后需要扩展到255,然后转换为整数以在rgb(...)中使用。

function ChangeColor() {
  var r = parseInt(255 * Math.random());
  var g = parseInt(255 * Math.random());
  var b = parseInt(255 * Math.random());
  var color = "rgb(" + [r, g, b].join(',') + ")";
  document.body.style.backgroundColor = color;
  setTimeout(ChangeColor, 3000);
}
ChangeColor();
<html>
  <body>
  </body>
</html>