如何在javascript中遍历所有子节点? [英] How to traverse all child nodes in javascript?

查看:115
本文介绍了如何在javascript中遍历所有子节点?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我遇到了问题,以下代码可以在Microsoft IE浏览器中正常运行,但无法在Google Chrome浏览器上运行。



XML文档结构:

 <? xml version =   1.0 ?>  
< 书店 >
< book >
< 作者 > name1 < / author >
< bo okname > C#编程< / bookname >
< 价格 > $ 50 < /价格 >
< / book >
< book >
< 作者 > name2 < / author >
< bookname > C ++编程< / bookname >
< 价格 > $ 60 < / price >
< / book >
< book >
< 作者 > name3 < / author >
< bookname > Java编程< / bookname >
< 价格 > $ 60 < / price >
< / book >
< / bookstore >





javascript code:

< script type =text / javascript> 
函数getXMLValue(){

if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}
else {
xmlhttp = new ActiveXObject(Microsoft.XMLHTTP);
}

xmlhttp.open(GET,books.xml,false);
xmlhttp.send(null);
xmlDoc = xmlhttp.responseXML;

var bNumber = xmlDoc.getElementsByTagName(book);
for(var i = 0; i< bNumber.length; i ++){
for(var j = 0; j< 3; j ++){
//访问属于所有'book'的子节点。
window.alert(xmlDoc.getElementsByTagName(book)[i] .childNodes [j] .childNodes [0] .nodeValue);
}
}

}

< / script>





Google Chrome提示:未捕获TypeError:无法读取未定义的属性'nodeValue'

谢谢。

解决方案

50 < / price >
< / book >
< 书籍 >
< 作者 > name2 < /作者 >
< bookname > C ++编程< / bookname >
< 价格 >

60 < / price >
< / book >
< book >
< 作者 > name3 < / author >
< bookname > Java编程< / bookname >
< 价格 >


60 < / price >
< / book >
< ; / bookstore >





javascript代码:

< script type =text / javascript> 
函数getXMLValue(){

if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}
else {
xmlhttp = new ActiveXObject(Microsoft.XMLHTTP);
}

xmlhttp.open(GET,books.xml,false);
xmlhttp.send(null);
xmlDoc = xmlhttp.responseXML;

var bNumber = xmlDoc.getElementsByTagName(book);
for(var i = 0; i< bNumber.length; i ++){
for(var j = 0; j< 3; j ++){
//访问属于所有'book'的子节点。
window.alert(xmlDoc.getElementsByTagName(book)[i] .childNodes [j] .childNodes [0] .nodeValue);
}
}

}

< / script>





Google Chrome提示:未捕获TypeError:无法读取未定义的属性'nodeValue'

感谢。


Hi,
I encountered a problem, the following code can run properly in Microsoft IE browser, but can not run on Google Chrome browser.

XML document structure:

<?xml version="1.0"?>
<bookstore>
  <book>
     <author>name1</author>
     <bookname>C# Programming</bookname>
     <price>$50</price>
  </book>
  <book>
     <author>name2</author>
     <bookname>C++ Programming</bookname>
     <price>$60</price>
  </book>
  <book>
     <author>name3</author>
     <bookname>Java Programming</bookname>
     <price>$60</price>
  </book>
</bookstore>



javascript codes:

<script type="text/javascript">
      function getXMLValue() {

          if (window.XMLHttpRequest) {
              xmlhttp = new XMLHttpRequest();
          }
          else {
              xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
          }

          xmlhttp.open("GET", "books.xml", false);
          xmlhttp.send(null);
          xmlDoc = xmlhttp.responseXML;

          var bNumber = xmlDoc.getElementsByTagName("book");
          for (var i = 0; i < bNumber.length; i++) {
              for (var j = 0; j < 3; j++) {
                  // Visit belong to all child nodes  of 'book' .
                 window.alert(xmlDoc.getElementsByTagName("book")[i].childNodes[j].childNodes[0].nodeValue);
              }
          }

      }

  </script>



Google Chrome prompt:Uncaught TypeError: Cannot read property 'nodeValue' of undefined
Thanks.

解决方案

50</price> </book> <book> <author>name2</author> <bookname>C++ Programming</bookname> <price>


60</price> </book> <book> <author>name3</author> <bookname>Java Programming</bookname> <price>


60</price> </book> </bookstore>



javascript codes:

<script type="text/javascript">
      function getXMLValue() {

          if (window.XMLHttpRequest) {
              xmlhttp = new XMLHttpRequest();
          }
          else {
              xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
          }

          xmlhttp.open("GET", "books.xml", false);
          xmlhttp.send(null);
          xmlDoc = xmlhttp.responseXML;

          var bNumber = xmlDoc.getElementsByTagName("book");
          for (var i = 0; i < bNumber.length; i++) {
              for (var j = 0; j < 3; j++) {
                  // Visit belong to all child nodes  of 'book' .
                 window.alert(xmlDoc.getElementsByTagName("book")[i].childNodes[j].childNodes[0].nodeValue);
              }
          }

      }

  </script>



Google Chrome prompt:Uncaught TypeError: Cannot read property 'nodeValue' of undefined
Thanks.


这篇关于如何在javascript中遍历所有子节点?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆