#javascript
#javascript
Вопрос:
Я новичок в javascript. Я использую значение узла для возврата текста из узла. Поскольку он возвращал значение null, я попробовал использовать firstChild.nodeValue. Но теперь он говорит: не удается прочитать свойство ‘nodeValue’ из null Вот код: —
<head>
<script type="text/javascript" src="get.js"></script>
</head>
<body>
<ul id="eventsList">
<li>List 1</li>
<li>List 2</li>
<li><a href="http://www.google.com">Linked item to Google</a></li>
<li>List 4</li>
</ul>
</body>
get.js: —
window.onload=function hear()
{
var no=document.getElementsByTagName("ul")[0];
var msg="";
if (no.hasChildNodes())
{
var son=no.childNodes;
var i;
for (i=0;i<son.length;i )
msg =son[i].firstChild.nodeValue;
}
alert(msg);
}
Любая помощь будет оценена.
Грамерси…
Комментарии:
1.
childNodes
также возвращает текст и комментарии, и не все ваши дочерние узлы имеютfirstChild
3. Спасибо за ваш ответ…. Я хотел бы прояснить одну вещь. Разве «Список 1» не является первым дочерним узлом первого тега «li»? Грамерси…
4. Согласно ссылке jsfiddle, вы использовали textContent вместо nodeValue . Можете ли вы объяснить мне разницу? Грамматика…
5. Для узла элемента
nodeValue
ничего не возвращает, вы должны использоватьtextContent
. Вы можете увидеть, что он возвращает в MDN
Ответ №1:
Вместо childNodes
того, чтобы использовать children
So, так и должно быть.
var son=no.children;
Ваш JS:
var son=no.children;
var i;
for (i=0;i<son.length;i ){
msg =son[i].firstChild.nodeValue;
}
Почему не работает?
childNodes
также включает, например, текстовые узлы и комментарии. Чтобы пропустить их, используйте ParentNode.children
вместо.
Комментарии:
1. Thanx…it сработало! Но я все еще не понимаю, почему дочерние узлы не работали. Я хотел, чтобы текстовые узлы и комментарии были включены. Но он просто возвращал значение null… Грамерси…
2. Дочерние узлы возвращают текстовые узлы, у которых нет значения узла. Итак, вы получаете исключение, и выполнение скрипта прекращается