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