<p id="para-01"><span>First span</span></p>
<p id="para-02">
<span>Second span</span>
</p>
Run Code Online (Sandbox Code Playgroud)
除新线外,这两段几乎相同.为什么nodeNames是SPAN和#text?
Text也是一种节点!这是一些HTML:
<p>hello <span>world</span></p>
Run Code Online (Sandbox Code Playgroud)
及其对应的树:
Element p
Text "hello "
Element span
Text "world"
Run Code Online (Sandbox Code Playgroud)
空格 - 这里,换行符和两个空格 - 仍然是一个文本节点,而你的第二个<p>孩子就是这个只有空格的文本节点.
您可以使用firstElementChild属性(更新的小提琴)获取现代浏览器中的第一个元素子元素:
console.log(document.getElementById('para-02').firstElementChild.nodeName)
Run Code Online (Sandbox Code Playgroud)
并且在所有具有该children集合的浏览器中,该集合仅包含元素*:
console.log(document.getElementById('para-02').children[0].nodeName)
Run Code Online (Sandbox Code Playgroud)
*加上IE8及更早版本的评论