You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么id为third的ul列表的childNodes数量为7而非预期的3个?

问题原因

childNodes 接口的设计本身就是返回目标元素的所有子节点,包含元素节点、文本节点、注释节点等所有节点类型。你看到的#text节点,就是HTML代码中<ul>标签与第一个<li>之间、各个<li>标签之间、最后一个<li>与</ul>之间的换行、缩进空格被浏览器解析生成的空白文本节点。
你提供的HTML结构刚好产生4个空白文本节点,加上3个<li>元素节点,总数量就是7,和你统计的结果完全吻合。

解决方法

如果只需要获取子元素节点,可选用以下两种方案:

  • 替换使用children属性:children是专门用于返回子元素节点的接口,会自动过滤文本、注释等非元素节点,执行document.getElementById('third').children得到的长度就是预期的3,对应3个<li>元素。
  • 手动过滤childNodes结果:如果必须使用childNodes,可以遍历节点列表,仅保留nodeType === 1的节点(Node.ELEMENT_NODE常量值为1,对应元素节点),示例代码如下:
const thirdUl = document.getElementById('third')
const childElements = Array.from(thirdUl.childNodes).filter(node => node.nodeType === 1)
console.log(childElements.length) // 输出3

内容的提问来源于stack exchange,提问作者Daniel jacob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 15:39:02