使用事件监听器(Javascript、jQuery)将BG颜色更改为随机颜色?

使用事件监听器(Javascript、jQuery)将BG颜色更改为随机颜色?,javascript,jquery,dom,events,random,Javascript,Jquery,Dom,Events,Random,我正在尝试一个简单的随机背景色生成器。当用户单击按钮时,背景颜色将更改为随机RGB值。但是,我也希望按钮本身在单击时更改为随机颜色 我尝试将DOM操纵器放在事件侦听器和随机RGB函数中。但是,我不断收到以下错误消息: script.js:19 Uncaught TypeError: Cannot set property 'backgroundColor' of undefined at randomBgColor (script.js:19) at HTMLButtonElem

我正在尝试一个简单的随机背景色生成器。当用户单击按钮时,背景颜色将更改为随机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

在代码中,
changeColor
是按钮。将此变量名重构为
按钮
,如下所示:

var button = document.getElementById("press");

button.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;
} 
作为奖励,下面是代码的简化版本,它实现了:

var按钮=document.getElementById(“按”);
按钮。addEventListener(“单击”,颜色);
函数randomBgColor(){
变量bgColor='rgb('+rando(255)+'、'+rando(255)+'、'+rando(255)+');
document.body.style.background=bgColor;
button.style.backgroundColor=bgColor;
}


换颜色在代码中,
changeColor
是按钮。将此变量名重构为
按钮
,如下所示:

var button = document.getElementById("press");

button.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;
} 
作为奖励,下面是代码的简化版本,它实现了:

var按钮=document.getElementById(“按”);
按钮。addEventListener(“单击”,颜色);
函数randomBgColor(){
变量bgColor='rgb('+rando(255)+'、'+rando(255)+'、'+rando(255)+');
document.body.style.background=bgColor;
button.style.backgroundColor=bgColor;
}


换颜色这是否回答了您的问题?简而言之,
getElementsByClassName
返回一个列表(注意复数“元素”),而不是一个列表。请注意,您已经将按钮元素设置为
changeColor
…我的答案令人满意吗?如果是这样,请用接受的复选标记和向上投票。谢谢这回答了你的问题吗?简而言之,
getElementsByClassName
返回一个列表(注意复数“元素”),而不是一个列表。请注意,您已经将按钮元素设置为
changeColor
…我的答案令人满意吗?如果是这样,请用接受的复选标记和向上投票。谢谢
var button = document.getElementById("press");

button.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;
}