Значение узла не возвращает текст

#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

2. jsfiddle.net/h6nbno73

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. Дочерние узлы возвращают текстовые узлы, у которых нет значения узла. Итак, вы получаете исключение, и выполнение скрипта прекращается