我试图每秒更改身体的背景颜色,但它不起作用。我做错了什么?
var colors = [
"red", "blue", "green", "yellow", "red"
],
rand = Math.ceil(Math.random() * colors.length - 1),
t = setInterval(function() {
document.body.style.backgroundColor = colors[rand];
}, 1000);
答案 0 :(得分:10)
您定义值rand
一次,然后每次重复使用它。你的意思是:
var colors = [
"red", "blue", "green", "yellow", "red"
];
t = setInterval(function() {
// use floor instead of ceil and then you can skip the -1
var rand = Math.floor(Math.random() * colors.length)
document.body.style.backgroundColor = colors[rand];
}, 1000);
另外,你使用逗号来分隔命令,虽然这并不总是会破坏(我至少可以想到它不会出现这种情况),这通常是一个坏主意,因为它意味着有一些更大的结构正在进行中。
根据patrick dw
的评论,您使用逗号是正确的。它导致我在这种情况下有一个精神错误,特别是当rand
移入setInterval
的函数时。我建议您可以将其重新编写为var colors, t; colors =
,以帮助人们了解更多信息(在某一点上看起来我不是唯一犯错误的人)
答案 1 :(得分:2)
rand
只设置一次,试试这个:
var colors = [
"red", "blue", "green", "yellow", "red"
],
t = setInterval(function() {
var rand = Math.ceil(Math.random() * colors.length - 1);
document.body.style.backgroundColor = colors[rand];
}, 1000);
答案 2 :(得分:0)
尝试以下
var colors = ["red", "blue", "green", "yellow", "red"];
t = setInterval(function() {
var rand = Math.ceil(Math.random()) % colors.length;
document.body.style.backgroundColor = colors[rand];
}, 1000);