【发布时间】:2015-05-28 10:12:26
【问题描述】:
我对 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 是文本本身”,但我得到了这个输出:
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
【问题讨论】:
-
我想知道
document.childNodes[0]是如何获得body 元素的? -
它是
HTML node,它的孩子是head和body。 -
真的,我必须将其更改为
document.body.childNodes才能使其正常工作,但如果它适合您,那可能没问题? -
是的,它也适用于我。但是我对 body 的子节点没有问题,但对子节点的文本内容没有问题。我会仔细阅读你和其他的答案。
标签: javascript html textnode nodevalue