我正在运行对xml文件的请求,如下所示:
function load()
{
var request = new XMLHttpRequest();
request.open("GET", "response.xml", true);
request.send();
request.onreadystatechange = function ()
{
if (request.readyState == 4)
{
var x = request.responseXML;
var y = x.getElementsByTagName("Limits")[0].childNodes[1];
var z = y.getElementsByTagName("Limits")[0].childNodes[0];
document.write(z);
}
};
}
xml response.xml
就是这样:
<Factory>
<Limits>
<Point X="92" Y="489">hahahahff</Point>
<Point X="570" Y="487">1111</Point>
<Point X="570" Y="138">33333</Point>
<Point X="92" Y="140">44444444</Point>
<Point X="92" Y="139">5555555</Point>
</Limits>
<Cells>
<Cell>
<Point X="358" Y="138"/>
<Point X="361" Y="487"/>
<Point X="570" Y="487"/>
<Point X="570" Y="138"/>
<Point X="358" Y="138"/>
</Cell>
<Cell>
<Point X="311" Y="139"/>
<Point X="311" Y="488"/>
<Point X="92" Y="489"/>
<Point X="92" Y="140"/>
<Point X="311" Y="139"/>
</Cell>
</Cells>
</Factory>
我收到此错误:
无法读取属性&#39; childNodes&#39;未定义的
为什么会这样?
我想要实现的是在不使用POINT
的情况下打印第二个getElementsByTagName("POINT")[1]
节点的值。
基本上我想进入&#39; Limits节点,并打印第二个值。
答案 0 :(得分:1)
这一行:
var z=y.getElementsByTagName("Limits")[0].childNodes[0];
应该是:
var z=x.getElementsByTagName("Limits")[0].childNodes[0];
x
是前一行的内容,因此它已经是Limits
的孩子了。因此,这一行试图在Limits
的子项内找到Limits
,并且没有这样的嵌套Limits
。