使用 JS 为所有具有 Class 的元素添加事件监听器
向具有类的所有元素添加事件监听器:
-
使用
document.querySelectorAll()
方法按类选择元素。 -
使用
forEach()
方法迭代元素集合。 -
使用
addEventListener()
方法为每个元素添加一个事件侦听器。
以下是本文示例的 HTML。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
</head>
<body>
<div class="box">Box 1</div>
<div class="box">Box 2</div>
<div class="box">Box 3</div>
<script src="index.js"></script>
</body>
</html>
这是相关的 JavaScript 代码。
const boxes = document.querySelectorAll('.box');
boxes.forEach(box => {
box.addEventListener('click', function handleClick(event) {
console.log('box clicked', event);
box.setAttribute('style', 'background-color: yellow;');
});
});
我们使用 document.querySelectorAll
方法来选择具有 box 类的所有元素。
querySelectorAll
方法返回一个 NodeList,因此我们可以使用 NodeList.forEach
方法迭代结果。
如果我们使用 document.getElementsByClassName
方法,则必须在调用 forEach()
方法之前将结果转换为数组。
const boxes = Array.from(document.getElementsByClassName('box'));
boxes.forEach(box => {
box.addEventListener('click', function handleClick(event) {
console.log('box clicked', event);
box.setAttribute('style', 'background-color: yellow;');
});
});
我们对集合中的每个元素调用了 addEventListener
方法。
addEventListener
方法有两个参数:
- 要侦听的事件类型。 如果您需要所有可用事件类型的列表,请查看 MDN 事件列表。
- 每次触发事件时调用的函数。
每次单击元素并设置元素的样式属性时,都会调用示例中的函数。
另一种但也是非常常见的方法是使用 for...of
循环遍历集合。
const boxes = document.getElementsByClassName('box');
for (const box of boxes) {
box.addEventListener('click', function handleClick(event) {
console.log('box clicked', event);
box.setAttribute('style', 'background-color: yellow;');
});
}
代码片段实现了相同的结果,但这次我们使用 for...of
循环来迭代元素集合。
如果我们需要选择具有不同类的元素,可以将多个以逗号分隔的选择器传递给 document.querySelectorAll()
方法。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
</head>
<body>
<div class="box1">Box 1</div>
<div class="box2">Box 2</div>
<div class="box3">Box 3</div>
<script src="index.js"></script>
</body>
</html>
这是相关的 JavaScript 代码。
const boxes = document.querySelectorAll('.box1, .box2, .box3');
boxes.forEach(box => {
box.addEventListener('click', function handleClick(event) {
console.log('box clicked', event);
box.setAttribute('style', 'background-color: yellow;');
});
});
我们将多个以逗号分隔的选择器传递给 querySelectorAll
方法,以获取具有类 box1 、box2 和 box3 的 DOM 元素的集合。
相关文章
使用 CSS 和 JavaScript 制作文本闪烁
发布时间:2023/04/28 浏览次数:146 分类:CSS
-
本文提供了使用 CSS、JavaScript 和 jQuery 使文本闪烁的详细说明。
在 PHP 变量中存储 Div Id 并将其传递给 JavaScript
发布时间:2023/03/29 浏览次数:69 分类:PHP
-
本文教导将 div id 存储在 PHP 变量中并将其传递给 JavaScript 代码。
在 JavaScript 中从字符串中获取第一个字符
发布时间:2023/03/24 浏览次数:93 分类:JavaScript
-
在本文中,我们将看到如何使用 JavaScript 中的内置方法获取字符串的第一个字符。
在 JavaScript 中获取字符串的最后一个字符
发布时间:2023/03/24 浏览次数:141 分类:JavaScript
-
本教程展示了在 javascript 中获取字符串最后一个字符的方法