1

当我尝试访问子节点时,我可以,但我无法访问它们的值,它显示为 null

     if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.open("GET","obj.xml",false);
    xmlhttp.send();
    xmlDoc=xmlhttp.responseXML;
    x=xmlDoc.getElementsByTagName("Objnode")[0].childNodes; 
    y=xmlDoc.getElementsByTagName("Objnode")[0].firstChild;    
    for (i=0;i<x.length;i++)
    {
    if (y.nodeType==1)
      {//Process only element nodes (type 1)
      document.write(y.nodeName + "<br>"); change it to y.nodeValue it says null!
      }
    y=y.nextSibling;
    }

我的xml就像

    <Objnode>
            <Object1>something</Object1>
            <Object2>something</Object2>
    </Objnode>

上面的代码有效,但行

document.write(y.nodeName + "<br>"); 

当将其更改为 y.nodeValue 时,它​​显示为空!

4

1 回答 1

0

实际上nodeType 1是一个HTML element, i.e. div, span etc,并且一个元素没有任何元素,nodeValue而是它可以包含子节点,并记住 an 内的任何文本element也是一个节点(文本节点)。看这个例子

HTML

<div id="d">First Text Node <br /> Another Text Node</div>​

JS

var n=document.getElementById('d');
alert(n.firstChild.nodeValue);​ // First Text Node
alert(n.childNodes[2].nodeValue); // Another Text Node

所以,在你的例子y.nodeValue中是空的。

演示

于 2012-11-17T17:20:01.477 回答