如果删除for,代码无效

时间:2014-02-05 02:51:07

标签: html xml

我得到了这段代码,这只是我正在制作的一个例子:

<html>
<body>

<script>
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","info.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML; 

var x=xmlDoc.getElementsByTagName("INFO");
for (i=0;i<x.length;i++)
  { 
  document.write("<div>");
  document.write(x[i].getElementsByTagName("CAJA1")[0].childNodes[0].nodeValue);
  document.write("</div>");
  }
</script>

</body>
</html>

但我想删除for,但是当我删除它时,屏幕显示什么!,我尝试了很多方法,但仍然无法使其工作

<html>
<body>

<script>
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","info.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML; 
  document.write("<div>");
  document.write(xmlDoc.getElementsByTagName("INFO").getElementsByTagName("CAJA1")[0].childNodes[0].nodeValue);
  document.write("</div>");
</script>

</body>
</html>

为什么会这样?谢谢!

2 个答案:

答案 0 :(得分:0)

为了与您的第一个代码段保持一致,您需要以下代码

document.write(xmlDoc.getElementsByTagName("INFO")[0].childNodes[0].nodeValue);

在第一段代码中,您可以在下面进行分配

var x=xmlDoc.getElementsByTagName("INFO");

稍后当您使用x时,您说x[0]

同样,如果您避免将xmlDoc.getElementsByTagName("INFO");分配给变量x,则仍然必须包含[],如果您已将作业分配到x < / p>

答案 1 :(得分:0)

从我在你的代码中看到的情况来看,似乎你在原文中访问了数组x中的元素x [i]

document.write(x[i].getElementsByTagName("CAJA1")[0].childNodes[0].nodeValue);

然而,在没有for循环的第二篇帖子中,你没有。

document.write(xmlDoc.getElementsByTagName("INFO").getElementsByTagName("CAJA1")[0].childNodes[0].nodeValue);

xmlDoc永远不会访问一个元素,即document.write(xmlDoc[0].getElementsByTagName("INFO").getElementsByTagName("CAJA1")[0].childNodes[0].nodeValue);