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 に変更すると、null と表示されます。

4

1 に答える 1

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ではnullです。

デモ

于 2012-11-17T17:20:01.477 に答える