贝利信息

JavaScript中如何操作节点_NodeList和HTMLCollection有何区别

日期:2026-01-01 00:00 / 作者:夜晨
NodeList和HTMLCollection均非数组,但HTMLCollection始终实时,NodeList依获取方式分静态(querySelectorAll)或动态(childNodes);二者均不可直接调用forEach等数组方法,且HTMLCollection支持name/id字符串索引而NodeList仅支持数字索引。

NodeList 和 HTMLCollection 都不是数组,但行为不同

它们看起来像数组(有 length、能用索引取值),但都不能直接调用 mapforEach(除非是静态 NodeList)——这是最常踩的坑。区别核心在于:HTMLCollection 始终是「实时」的,而 NodeList 有可能是「静态」的,取决于获取方式。

getElementsByXXX 返回 HTMLCollection,querySelectorAll 返回 NodeList

这是实际编码中最关键的区分点。实时性直接影响后续 DOM 变更是否反映在集合中: