gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 03:17:41 24 4
gpt4 key购买 nike

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

}

最佳答案

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

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

作为奖励,这是实现 randojs.com 的代码的简化版本:

var button = document.getElementById("press");
button.addEventListener("click", randomBgColor);

function randomBgColor() {
var bgColor = 'rgb(' + rando(255) + ',' + rando(255) + ',' + rando(255) + ')';
document.body.style.background = bgColor;
button.style.backgroundColor = bgColor;
}
<script src="https://randojs.com/1.0.0.js"></script>
<button id="press">Change color!</button>

关于javascript - 使用事件监听器(Javascript、jQuery)将 BG 颜色更改为随机颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59490289/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com