我对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 说明:"文本节点的节点值是文本本身">,但我得到的是这个输出:
3: #text:
1: DIV: null
3: #text:
1: UL: null
3: #text:
你能解释一下为什么nodeValue
element node
回报null
而text node
"什么都没有"吗?
编辑:关于空格的东西在这里得到了很好的描述:https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Whitespace_in_the_DOM
nodeValue
根据规范所做的,它返回这个
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
请注意,对于显式返回的所有其他节点类型,它为除注释、textNode 和处理指令之外的任何内容返回null
null
。
若要获取元素节点的文本内容,请使用 textContent
(innerText
对于较旧的 IE(,若要获取元素节点的 HTML,请使用 innerHTML
为什么节点值返回元素节点的
null
因为元素节点没有值。它们基本上只有一个名字、属性和子项。
。和文本节点的"无"?
它确实会返回一些东西:这些元素节点之间的空格。