javascript - 无法使用 forEach 循环遍历 HTMLCollection
问题描述
我正在尝试为每个类名为director__card--iconBox
. 我选择这些元素的方式是通过getElementsByClassName
. 编写当前代码后,我正在测试将background-color
其父 div 的一个应用到红色的函数。最终目标是能够翻转 div 并显示稍后将出现的 div 的背面。
const toggleButton = document.getElementsByClassName("director__card--iconBox");
toggleButton.forEach((el) =>
el.addEventListener("click", (event) => {
const card = event.target.parentElement.querySelector(".director__card");
card.classList.toggle("open");
})
);
我正在取回一个 HTMLCollection。我的想法是这不会因为 HTMLCollection 而工作?我试过 querySelectorAll 带回一个节点列表,但 NodeList 返回空..
解决方案
HTMLCollection是一个类似数组的对象,但它没有forEach
方法。
您可以通过多种方式对其进行迭代;
例如
从中创建一个数组;
Array.from(toggleButton).forEach((el) =>
el.addEventListener("click", (event) => {
const card = event.target.parentElement.querySelector(".director__card");
card.classList.toggle("open");
})
);
利用for..of
for (let item of toggleButton) {
item.forEach((el) =>
el.addEventListener("click", (event) => {
const card = event.target.parentElement.querySelector(".director__card");
card.classList.toggle("open");
});
);
}
或者,只是for
循环。
for (let i = 0, len = toggleButton.length; i < len; i++) {
toggleButton[i].forEach((el) =>
el.addEventListener("click", (event) => {
const card = event.target.parentElement.querySelector(".director__card");
card.classList.toggle("open");
});
);
}
推荐阅读
- swift - Xcode Error Embedded binary's bundle identifier is not prefixed with parent app's bundle identifier
- python - 如何为 Scrapy Web Scraper 创建测试用例和数据点验证器
- caching - 计算机架构与缓存块大小的关系
- c# - 使用用户名、密码、公司 ID 调用 Rest API
- python - Pi 设置 - 如何简化
- mysql - 每月刷新 MATERIALIZED VIEW
- laravel-mix-vue3 - 无头 Ui vue 脚本对我不起作用
- azure - 除非我们关闭 ServiceBusSenderClient,否则 ServiceBusSenderClient.sendMessage() 是否会引发 IllegalStateException?
- sql-server - Microsoft MDS 不显示名称和代码属性
- reactjs - React.js process.env.PUBLIC_URL 不会根据路由生成相同的路径