检查节点是否包含 class 的任何元素

Check if node contains any element with class

我有一个节点列表。我想一个接一个地检查每个节点是否包含具有特定 class.

的任何元素

我知道 Node.contains() 方法,但我不知道如何使用某些 class 搜索任何元素。

谢谢。

ES6 spread syntax is usually the easiest. Alternatively, you can use Array.from() to convert NodeList to an array, and then use any array functions to filter what you want. In this case, I'm using .filter() 只抓取那些包含任何带有 .test:

的元素

const nodes = document.querySelectorAll('div');

const filtered = [...nodes].filter(el => el.querySelector('.test') !== null);

console.log('All nodes:', [...nodes]);
console.log('Filtered:', filtered);

console.log('Filtered (outerHTML):', filtered.map(el => el.outerHTML));
<div><span class="test" /></div>
<div><span class="rawr" /></div>

你可以用这个

Array.from(document.getElementsByClassName("someClass")).some(({classList}) =>classList.contains('requiredClass'))