Array.some() 不是函数

Vla*_*996 4 javascript arrays methods class typeerror

我对 JavaScript 中的 array.some() 方法有疑问。我有一个 html 代码:

<div class="list">
 <div class="item"></div>
 <div class="item"></div>
 <div class="item selected"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

我试图找到包含类名“selected”的数组元素。

const items = document.querySelectorAll('.item');

items.some(item => {
 if (item.classList.contains('selected')) { console.log(true); }
 else { console.log(false); }
});
Run Code Online (Sandbox Code Playgroud)

但我得到的只是这个错误:“Uncaught TypeError: items.some is not a function” 有人可以告诉我,为什么 Array.some() 方法不适用于 div 数组?谢谢

pal*_*aѕн 9

发生这种情况是因为.some()是一个数组方法,但items这里不是一个数组,而是一个节点集合,更广为人知的名称是NodeList。因此,我们首先需要将其转换为数组,如下所示:

const items = [...document.querySelectorAll('.item')];
Run Code Online (Sandbox Code Playgroud)

欲了解更多信息:

演示:

const items = [...document.querySelectorAll('.item')];
Run Code Online (Sandbox Code Playgroud)
const items = [...document.querySelectorAll('.item')];

items.some(item => {
  if (item.classList.contains('selected')) {
    console.log(true, item);
  } else {
    console.log(false, item);
  }
});
Run Code Online (Sandbox Code Playgroud)