需要帮助计算子节点
Need help counting childNodes
使用此HTML:
<p id="child"><span id="grandchild"></span></p>
这个JavaScript:
var x = document.getElementById("child").childNodes;
console.log(x.length);
我得到1
。用这个HTML代替:
<p id="child"><span id="grandchild">hi</span></p>
我也有1
。我期待2
。
在第一个HTML片段中,由于span
元素,我期望1
。在第二个片段中,我期望2
,因为不仅有span
元素,还有hi
文本节点。
我误解了什么?
子节点仅指下的直接节点。
<p id ="child"><span id="grandchild">hi</span></p> //1 child node
Only 1 child node is counted because "hi" is not a child of p#child it is the child of <span>
如果你想对所有的后代进行计数,你必须递归地进行,请参阅下面的示例:
function countChild(p)
{
var ctr = p.childNodes.length;
for(var i=0;i<p.childNodes.length;i++)
{
ctr += countChild(p.childNodes[i]);
}
return ctr;
}
var x = document.getElementById("child");
alert(countChild(x));
第一个示例中的层次结构如下所示:
<p id="child">
<p id="grandchild">
第二个例子中的层次结构如下:
<p id="child">
<p id="grandchild">
- 文本节点:
hi
- 文本节点:
childNodes
只包含直接子代,每次child
的唯一直接子代是grandchild
。
您使用ID不正确。如果你在计算类的话,你想给它们分配类。每个ID在DOM 中都必须是唯一的
尝试一些调谐的东西:
<p id ="child1"><span id="grandchild"></span></p> //1 child node
<p id ="child2"><span id="grandchild">hi</span></p> //1 child node
var x = document.getElementById("child2").childNodes;
document.write(x.length);
相关文章:
- 选择<李>使用普通JavaScript的子节点,而不是孙节点
- js循环遍历单击的元素子节点
- 如何将数据添加到json的子节点
- 删除HTML节点而不删除其子节点
- 如何在javascript DOM api中获取具有给定条件的子节点
- 仅使用某些子节点访问xml中父节点的子节点
- 检测单击子节点并发送槽事件处理程序
- 从 d3.js 中的树中选择节点的子节点
- 访问所选剑道树视图节点的子节点
- 为什么正文标记后的脚本标记在子节点中计数
- 难以获取使用属性选择的节点的子节点
- 使用Javascript设置带有子节点的父节点的类's文本等于.
- 如何确定父节点是否有子节点
- 在没有 jquery 的情况下更改子节点(父节点具有 ID)中的链接文本
- Javascript - 子节点计数
- 在子节点上重复
- 如何在D3.js基于力的标签布局图中获取公共子节点
- 如何访问React中的子节点
- 需要帮助计算子节点
- 如何在删除节点时计算父节点的子节点