JavaScript 文本节点属性

JavaScript text nodes properties

我对 JavaScript 中文本节点的属性有点困惑。 假设我有这条 html:

<html lang="en-US">
<head>
    <title>JavaScript test</title>
    <script type="text/javascript" src="test.js"></script>
</head>
<body onload="load()">
    <div>
        <p>Paragraph 1</p>
        <p>Paragraph 2</p>
    </div>
    <ul>
        <li>1.</li>
        <li>2.</li>
    </ul>
</body>

onload()函数:

function load()
{
    var bodyChildren = document.childNodes[0].childNodes;
    for(var i = 0; i < bodyChildren.length; i++) 
    {
        alert(bodyChildren[i].nodeType
            + ": " + bodyChildren[i].nodeName
            + ": " + bodyChildren[i].nodeValue);
    }
}

这个http://www.w3schools.com/js/js_htmldom_navigation.asp告诉: "nodeValue for text nodes is the text itself",但我得到这个输出:

3: #text: 
1: DIV: null
3: #text: 
1: UL: null
3: #text: 

你能解释一下为什么 nodeValue returns null 用于 element node 和 "nothing" 用于 text node 吗?

编辑: 关于空格的内容在这里得到了很好的描述: https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Whitespace_in_the_DOM

这就是 nodeValue 根据 specification 所做的,它 returns 这个

Comment               - content of the comment
Document              - null
DocumentFragment      - null
DocumentType          - null
Element               - null
NamedNodeMap          - null
EntityReference       - null
Notation              - null
ProcessingInstruction - entire content excluding the target
Text                  - content of the text node

请注意,它 returns null 对于任何 但是 评论,文本节点和处理指令,对于所有其他节点类型 null 是明确的返回。

获取Element节点的文本内容,使用textContentinnerText for older IE),获取Element节点的HTML,使用innerHTML

why nodeValue returns null for element node

因为 element nodes 没有值。他们基本上只有名字、属性和children.

…and "nothing" for text node?

它return 对你有用:那些元素节点之间的空白。