发布于 2026-01-06 1 阅读
0

JavaScript 循环查询选择器所有结果

JavaScript 循环查询选择器所有结果

我们来谈谈节点列表,也就是querySelectorAll()查询的神奇结果。

它虽然不是数组,但外观和行为都与数组类似。
遍历这些元素可能比较棘手,而且有多种方法可以实现。

选择器的外观如下:



const items = document.querySelectorAll('li');
console.log(items);


Enter fullscreen mode Exit fullscreen mode

结果:

JavaScript 节点列表

1. 基本 for 循环

这是目前为止支持最好的方法,如果要尽可能支持更多浏览器,这是最佳选择。



for (let i = 0; i < items.length; i++) {
  items[i].addEventListener('click', function() {
    console.log(`Text = ${items[i].innerText}`);
  });
}


Enter fullscreen mode Exit fullscreen mode

这并不是最现代或最吸引人的方法。

2. for...of 循环

我们还可以使用for...of循环。



for (const item of items) {
  item.addEventListener('click', () => {
    console.log(`2: Text = ${item.innerText}`);
  });
}


Enter fullscreen mode Exit fullscreen mode

所有现代浏览器都支持此功能,而且效果相当不错。

3. forEach 循环

我最喜欢的遍历 NodeList 元素的方法就是 forEach 循环。

这是最简单的方法,但仅适用于现代浏览器。



items.forEach(item => {
  item.addEventListener('click', () => {
    console.log(`3: Text = ${item.innerText}`);
  });
});


Enter fullscreen mode Exit fullscreen mode

可以通过事先将其转换为数组来扩展此方法。



[].forEach.call(items, function(item) {
  item.addEventListener('click', function() {
    console.log(`3.1: Text = ${item.innerText}`);
  });
});


Enter fullscreen mode Exit fullscreen mode

或者,我们可以使用扩展运算符将其转换为数组:



[...items].forEach(item => {
  item.addEventListener('click', () => {
    console.log(`3.2: Text = ${item.innerText}`);
  });
});


Enter fullscreen mode Exit fullscreen mode

以上就是遍历 nodeList 元素的三种方法(+迭代)。

你也可以在这个 Codepen 上试玩一下。

感谢阅读,让我们保持联系!

感谢您阅读我的博客。欢迎订阅我的电子邮件简讯,也可以在FacebookTwitter上关注我。

文章来源:https://dev.to/dailydevtips1/javascript-loop-queryselectorall-results-j6