【发布时间】:2021-01-14 04:11:56
【问题描述】:
每当我单击按钮时,我都会尝试将按钮文本的颜色更改为“白色”。但是单击按钮后,我收到错误“Uncaught TypeError: Cannot set property 'color' of undefined”。我尝试使用 console.log(this) 提取对象,但它没有返回我单击的按钮对象,而是返回“窗口”类型的对象。我不明白为什么我无法访问按钮并选择其中的文本并更改颜色。我正在粘贴我的 html 和 js 代码。请让我知道哪里出错了.
for (var i = 0; i < (document.querySelectorAll('.drum').length); i++) {
document.querySelectorAll(".drum")[i].addEventListener("click", () => {
this.style.color = "white";
});
}
body {
text-align: center;
background-color: #283149;
}
h1 {
font-size: 5rem;
color: #DBEDF3;
font-family: "Arvo", cursive;
text-shadow: 3px 0 #DA0463;
}
footer {
color: #DBEDF3;
font-family: sans-serif;
}
.w {
background-image: url(./images/tom1.png);
}
.a {
background-image: url(./images/tom2.png);
}
.s {
background-image: url(./images/tom3.png);
}
.d {
background-image: url(./images/tom4.png);
}
.j {
background-image: url(./images/snare.png);
}
.k {
background-image: url(./images/crash.png);
}
.l {
background-image: url(./images/kick.png);
}
.set {
margin: 10% auto;
}
.game-over {
background-color: red;
opacity: 0.8;
}
.pressed {
box-shadow: 0 3px 4px 0 #DBEDF3;
opacity: 0.5;
}
.red {
color: red;
}
.drum {
outline: none;
border: 10px solid #404B69;
font-size: 5rem;
font-family: 'Arvo', cursive;
line-height: 2;
font-weight: 900;
color: #DA0463;
text-shadow: 3px 0 #DBEDF3;
border-radius: 15px;
display: inline-block;
width: 150px;
height: 150px;
text-align: center;
margin: 10px;
background-color: white;
}
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Drum Kit</title>
<link rel="stylesheet" href="styles.css">
<link href="https://fonts.googleapis.com/css?family=Arvo" rel="stylesheet">
</head>
<body>
<h1 id="title">Drum ???? Kit</h1>
<div class="set">
<button class="w drum">w</button>
<button class="a drum">a</button>
<button class="s drum">s</button>
<button class="d drum">d</button>
<button class="j drum">j</button>
<button class="k drum">k</button>
<button class="l drum">l</button>
</div>
<script src="index.js"></script>
</body>
</html>
【问题讨论】:
-
没有显示尝试设置
color属性的代码,因此该代码不是一个好的minimal reproducible example。请显示在运行时重现您所询问的错误的代码。请注意,最好将对document.querySelectorAll(".drum")的响应缓存在一个变量中,然后对其进行迭代。 -
@HereticMonkey 尝试运行 sn-p ..它可以工作,问题将被重现
-
我运行了 sn-p 并没有看到错误“Uncaught TypeError: Cannot set property 'color' of undefined”。
-
@HereticMonkey 哦,是的!我看到我没有保存我所做的更改,所以它只是显示未定义..请现在看它显示错误!
-
.color.style应该是.style.color。
标签: javascript html css