javascript - 是什么导致 childNodes 返回 #text 而不是 <div>?

标签 javascript

childNodes偶尔给我#text元素而不是 <div>

<div class="first-div">
    <div class="second-div">
        <div class="third-div">1</div>
        <div class="third-divs-sibling">2</div>
    </div>
</div>

当我尝试像这样访问孙子时:

var xxx = document.getElementsByClassName('first-div')[0];

console.log(xxx.childNodes[ 1 ].childNodes[ 1 ]);
console.log(xxx.childNodes[ 1 ].childNodes[ 2 ]);

Chrome 给我这个:

<div class="third-div">1</div>
#text

这里是 JSFiddle

起初,我以为它在某处发现了空白,但是console.log(xxx.childNodes[ 1 ])仅返回 3 个节点。在我未经训练的眼睛看来,这就像是邪恶的魔法。

谁有更科学的解释?

最佳答案

空格也会创建文本节点。你的 #second-div 实际上有 5 个 child ,其中只有 2 个是元素:

  • childNodes[0]:开始标签和#third-div
  • 之间的换行符
  • childNodes[1]:#third-div
  • childNodes[2]:#third-div#third-divs-sibling
  • 之间的换行符
  • childNodes[3]:#third-divs-sibling
  • childNodes[4]:#third-divs-sibling和结束标签之间的换行符

如果您只查找元素,可以使用 .children collection而不是 .childNodes

关于javascript - 是什么导致 childNodes 返回 #text 而不是 <div>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45614337/

相关文章:

javascript - 更有效地发送 Canvas 内容

javascript - 为什么单个基于 JQuery 的内容 slider 不适合我? (bxSlider,js中的逗号)

javascript - 使用 js animate 缩放背景图像 - 得到摇晃的图像

javascript - 使用 JavaScript 在 HTML 表格中动态插入一行

javascript - 验证摘要消息弹出两次

javascript - javascript中函数的并行执行

c# - 将 Html.Partial 添加到 Javascript

javascript - 基于垂直滚动切换类

javascript - 将 div 垂直居中于网格中放大的 div 的左侧和右侧

javascript - 为什么从另一个方法调用方法时会得到 "TypeError: this.X is not a function"?