gpt4 book ai didi

javascript - 带有 classList 的 querySelectorAll() 上的 addEventListener

转载 作者:行者123 更新时间:2023-12-01 15:02:29 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Adding click event listener to elements with the same class

(5 个回答)


上个月关门。




我正在尝试添加一个事件监听器,但没有结果。我知道 JavaScript 具有提升功能,但我相信除了正确的解决方案之外我尝试了所有方法。

const cbox = document.querySelectorAll(".box");
function doit() {
for (let i = 0; i < cbox.length; i++){
cbox[i].classList.add("red");
}
}
cbox.addEventListener("click", doit, false);
有人能发现我犯的错误吗?

最佳答案

代码与您提供的链接之间存在一些差异。没有功能doit()在那里。
您已附上 addEvenListenerNodeListcbox.addEventListener("click",..... ,您必须遍历列表并将事件附加到当前元素:
尝试以下操作:

const cbox = document.querySelectorAll(".box");

for (let i = 0; i < cbox.length; i++) {
cbox[i].addEventListener("click", function() {
cbox[i].classList.toggle("red");
});
}
*,
html,
body {
padding: 0;
margin: 0;
}

.box {
width: 10rem;
height: 10rem;
background-color: yellowgreen;
float: left;
position: relative;
margin: 0.5rem;
transition: .5s all;
}

h3 {
display: block;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}

.box:not(:first-child) {
margin-left: 1rem;
}

.red {
background-color: orangered;
}
<div id="box1" class="box box1">
<h3>Box 1</h3>
</div>
<div id="box2" class="box box2">
<h3>Box 2</h3>
</div>
<div id="box3" class="box box3">
<h3>Box 3</h3>
</div>
<div id="box4" class="box box4">
<h3>Box 4</h3>
</div>

您也可以使用 Array.prototype.forEach() arrow function 允许您用更少的代码实现相同的语法:

let cbox = document.querySelectorAll(".box");
cbox.forEach(box => {
box.addEventListener('click', () => box.classList.toggle("red"));
});
*,
html,
body {
padding: 0;
margin: 0;
}

.box {
width: 10rem;
height: 10rem;
background-color: yellowgreen;
float: left;
position: relative;
margin: 0.5rem;
transition: .5s all;
}

h3 {
display: block;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}

.box:not(:first-child) {
margin-left: 1rem;
}

.red {
background-color: orangered;
}
<div id="box1" class="box box1">
<h3>Box 1</h3>
</div>
<div id="box2" class="box box2">
<h3>Box 2</h3>
</div>
<div id="box3" class="box box3">
<h3>Box 3</h3>
</div>
<div id="box4" class="box box4">
<h3>Box 4</h3>
</div>

关于javascript - 带有 classList 的 querySelectorAll() 上的 addEventListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50643302/

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