Я немного смущен о свойствах текстовых узлов в JavaScript. Пусть говорят, что у меня есть этот кусок HTML:Свойства текстовых узлов JavaScript
<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
null
для element node
и "ничего не дано" для text node
?
Edit: Материал о белых пространств хорошо описана здесь: https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Whitespace_in_the_DOM
Интересно, как 'document.childNodes [0]' получает элемент body? – Bergi
Это «узел HTML», а дети - «голова» и «тело». – Majak
Действительно, мне пришлось изменить его на 'document.body.childNodes', чтобы заставить его работать, но если он работает для вас, это, наверное, хорошо? – adeneo