我正在尝试显示特定标记的所有节点,到目前为止它确实过滤了我想要的数据,但只显示了一个节点。有人可以帮帮我吗?
这是XML:
<?xml version="1.0" encoding="UTF-8"?>
<USA>
<NY>
<Cell>NY Store 1</Cell>
<Cell>NY Store 2</Cell>
<Cell>NY Store 3</Cell>
</NY>
<CA>
<Cell>CA Store 1</Cell>
<Cell>CA Store 2</Cell>
<Cell>CA Store 3</Cell>
</CA>
</USA>
这是脚本:
<script>
function loadXMLDoc()
{
var xmlhttp;
var txt,x,i;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
xmlDoc=xmlhttp.responseXML;
txt="";
x=xmlDoc.getElementsByTagName("CA");
for (i=0;i<x.length;i++)
{
xx=x[i].getElementsByTagName("Cell");
}
try
{
txt=txt + xx[0].childNodes[0].nodeValue + "<br />";
}
catch (er)
{
}
document.getElementById("result").innerHTML=txt;
}
}
xmlhttp.open("GET","stores.xml",true);
xmlhttp.send();
}
</script>
这是HTML:
<button type="button" onclick="loadXMLDoc()">California</button>
<div id="result">Please select your state</div>
正如我所说,这句话很好,但它只显示加利福尼亚州的一个元素。有任何想法吗?先谢谢!
答案 0 :(得分:0)
xx也是一个数组,因此你需要在x循环中使用另一个循环。
尝试捕捉需要进入这个循环。
我不是很擅长javascript,但是如果你的语法正确的话。所以,我认为这可行(虽然我没有测试):
for (i=0;i<x.length;i++)
{
xx=x[i].getElementsByTagName("Cell");
for(j=0;j<xx.length;j++) {
try {
txt=txt + xx[j].childNodes[0].nodeValue + "<br />";
}
catch(er) {
}
}
}
document.getElementById("result").innerHTML=txt;