Javascript 为什么我可以通过某个节点主义者&x27;但不是全部?

Javascript 为什么我可以通过某个节点主义者&x27;但不是全部?,javascript,arrays,html,Javascript,Arrays,Html,当我在这个网站上回答问题时,我开始使用更多。我也开始使用,或者更多 我最近注意到,.forEach()有时有效,有时无效。经过一点研究,我发现你不能通过。然后我转到,发现可以在节点列表上使用.forEach() 注意:我还在下面添加了两个片段,其中.forEach()起作用,但不起作用。它似乎适用于document.queryselectoral(),但不适用于document.getElementsByClassName(),但为什么?它们不是都返回一个节点列表吗 TL;DR:为什么我可以在一

当我在这个网站上回答问题时,我开始使用更多。我也开始使用,或者更多

我最近注意到,
.forEach()
有时有效,有时无效。经过一点研究,我发现你不能通过。然后我转到,发现可以在节点列表上使用
.forEach()

注意:我还在下面添加了两个片段,其中
.forEach()
起作用,但不起作用。它似乎适用于
document.queryselectoral()
,但不适用于
document.getElementsByClassName()
,但为什么?它们不是都返回一个
节点列表吗

TL;DR:为什么我可以在一些
节点列表上
.forEach()
,但不是全部?
.forEach()
适用于此代码段

let text=document.queryselectoral(“.text”);
console.log(文本类型);
text.forEach(e=>{
控制台日志(e);
});
文本
正文
正文

Text
这是因为
querySelectorAll
返回一个
NodeList
,但
getElementsByClassName
返回一个
HTMLCollection

let querySelector=document.queryselectoral(“.text”);
让className=document.getElementsByClassName(“text”);
log(querySelector.constructor.name);
log(className.constructor.name)
文本
正文
正文

Text
getElementsByClassName
返回
HTMLCollection
,它没有forEach
方法

let text1=document.queryselectoral(“.text”);
设text2=document.getElementsByClassName(“text”);
console.log(text1.forEach);
console.log(text2.forEach)

Text
发生这种情况是因为
getElementsByClassName
不返回数组,而是返回
HTMLCollection
。它是一个类似于
数组的对象,如文档中所述

如果要在不转换任何内容的情况下迭代
HTMLCollection
,可以使用:

const list = document.getElementsByClassName('text');
const matches = Array.prototype.forEach.call(list, (el) => console.log(el));
我添加了一个片段来澄清这一点,效果很好:

const list=document.getElementsByClassName('text');
const matches=Array.prototype.forEach.call(list,(el)=>console.log(el))