javascript - 为什么这个 setInterval 代码不起作用?

标签 javascript

我试图每秒更改正文的背景颜色,但它不起作用。我做错了什么?

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

最佳答案

您定义了值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 = 帮助人们了解更多(有一次看起来我不是唯一犯这个错误的人)

关于javascript - 为什么这个 setInterval 代码不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7286356/

相关文章:

javascript - 如何根据下拉选择更改表单验证模式?

javascript - “this”指针未定义可能是因为它丢失了,但是怎么办呢?

javascript - 是否可以使用媒体 key 来控制网站?

javascript - 使用 Protractor 验证文本部分

javascript - 非常简单的 Node.js 客户端在多次 http 请求后抛出错误 ENOBUFS

javascript - 如何在 JavaScript 中将字符串中的 7 格式化为 '07'?

javascript - 如何为按回车键执行搜索的现有代码创建搜索按钮? php/javascript/mysql

javascript - fullPage js 在 IE 中滚动错误的高度

javascript - 如何在 jQuery 中停止以下 setInterval()

javascript - 如何编辑 svg 并将其作为数据发送