javascript - 你如何使用 Javascript 计算 HTML DOM 中的子节点?

标签 javascript dom

<分区>

问题:如何使用 Javascript 计算 HTML DOM 中的子节点?

这是我的代码;

<div id="myDiv">
  <p>First p Element.</p>
  <p>Second p Element.</p>
</div>

alert(document.getElementById("myDiv").childNodes.length);
//5

但是我认为有4个子节点...

我的解释:

<p></p> (1st) //Element node
First p Element. (2nd) // text node
<p></p> (3rd) //Element node
Second p Element. (4th) // text node

我想知道第 5 个子节点来自哪里?

关于空格被认为是文本节点元素什么时候被认为没有子节点?

最佳答案

有五个:

  1. 包含空格的文本节点(在开头 <div> 和第一个 <p> 之间)
  2. p元素
  3. 包含空格的文本节点(在 </p> 和后面的 <p> 之间)
  4. p元素
  5. 包含空格的文本节点(在最后一个 </p></div> 之间)

请注意,您在列表中提到的两个文本节点都不myDiv 中。的 childNodes .他们在 childNodesp里面的元素myDiv . childNodes仅包括元素的直接子级,不包括其间接后代。

插图:

var nodes = document.getElementById("myDiv").childNodes;
var n, node;
for (n = 0; n < nodes.length; ++n) {
  node = nodes[n];
  if (node.nodeType == 3) { // text node
    console.log(node.nodeName + ": " + JSON.stringify(node.nodeValue));
  } else {
    console.log(node.nodeName);
  }
}
<div id="myDiv">
  <p>First p Element.</p>
  <p>Second p Element.</p>
</div>

关于javascript - 你如何使用 Javascript 计算 HTML DOM 中的子节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41997351/

相关文章:

javascript - 使用 javascript 添加/删除输入字段

javascript - 我的 if 语句是否忽略了我的条件?

javascript - 无论我如何删除 View ,主干都会留下分离的 DOM 元素

java - 在 datePicker 上选择日期的事件

javascript - 如何通过点击div数组来过滤记录?

javascript - 实数的 ng-pattern 正则表达式

javascript - 如何在移动 web UI 上实现选择性缩放?

javascript - 输入元素上的 innerHTML 是什么?

javascript - 设置 AJAX 回调操作的最短等待时间

javascript - 视频搜索滚动 (60FPS)