【发布时间】:2020-04-16 19:21:22
【问题描述】:
我正在尝试一个简单的随机背景颜色生成器。当用户单击按钮时,背景颜色会变为随机的 RGB 值。但是,我还希望按钮本身在单击时更改为随机颜色。
我尝试将 DOM 操纵器放入事件侦听器和随机 RGB 函数中。但是我不断收到此错误消息:
script.js:19 Uncaught TypeError: Cannot set property 'backgroundColor' of undefined
at randomBgColor (script.js:19)
at HTMLButtonElement.<anonymous> (script.js:7)
randomBgColor @ script.js:19
(anonymous) @ script.js:7
代码如下:
<html>
<button id="press" class="button">Press me to change the background color!</button>
</html>
var changeColor = document.getElementById("press");
var button = document.getElementsByClassName("button");
changeColor.addEventListener("click", function(){
randomBgColor();
})
function randomBgColor() {
var x = Math.floor(Math.random() * 256);
var y = Math.floor(Math.random() * 256);
var z = Math.floor(Math.random() * 256);
var bgColor = 'rgb(' + x + ',' + y + ',' + z + ')';
console.log(bgColor);
document.body.style.background = bgColor;
button.style.backgroundColor = bgColor;
}
【问题讨论】:
-
简而言之,
getElementsByClassName返回一个列表(注意复数“元素”),而不是一个列表。请注意,您已经将按钮元素设置为changeColor... -
我的回答满意吗?如果是这样,请用接受的复选标记标记一个并投票。谢谢!
标签: javascript jquery dom events random