为什么nodeNames不同?

BAE*_*BAE 0 javascript dom

Jsfiddle在这里:

<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

Ry-*_*Ry- 5

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及更早版本的评论