无法访问子节点的值,但我可以访问子节点的名称

时间:2012-11-17 16:48:12

标签: javascript

当我尝试访问子节点时,我可以,但我无法访问它们的值,它表示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时,它表示null!

1 个答案:

答案 0 :(得分:0)

实际上nodeType 1是一个HTML element, i.e. div, span etc,而一个元素没有任何nodeValue,而是可以包含子节点,并记住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为空。

DEMO