Javascript HttpXMLRequest被卡住了

Javascript HttpXMLRequest被卡住了,javascript,Javascript,我只是尝试在JS中使用HttpXMLRequest对象,我有一个基本循环,从XML文件加载名称和年龄,并将其放入表中。如果每个同级具有相同的值,那么它将正常加载,但是如果同级缺少一个元素,那么它将停止而不是跳过它。这里有一些代码 HTML- (The rest of the XML parser and DTD, html, body etc is up here) <script> var x=xmlDoc.getElementsByTagName("person"); docu

我只是尝试在JS中使用HttpXMLRequest对象,我有一个基本循环,从XML文件加载名称和年龄,并将其放入表中。如果每个同级具有相同的值,那么它将正常加载,但是如果同级缺少一个元素,那么它将停止而不是跳过它。这里有一些代码

HTML-

(The rest of the XML parser and DTD, html, body etc is up here)
<script>
var x=xmlDoc.getElementsByTagName("person");

document.write("<table border='1'>");
for (i=0;i<x.length;i++)
  { 
  var name = x[i].getElementsByTagName("name")[0].childNodes[0].nodeValue;
  var age = x[i].getElementsByTagName("age")[0].childNodes[0].nodeValue;

  document.write("<tr>");
  document.write("<td>"+name+"</td>");
  document.write("<td>"+age+"</td>");
  document.write("</tr>");
  }
document.write("</table>");
</script>
(其余的XML解析器和DTD、html、正文等在这里)
var x=xmlDoc.getElementsByTagName(“个人”);
文件。填写(“”);

对于(i=0;i在尝试访问其子节点之前检查元素的存在性:

var personElem=x[i];
var ageElems=personElem.getElementsByTagName(“年龄”);
变量年龄=年龄长度
?ageElems[0]。firstChild.nodeValue
: '';
顺便说一句,使用JSON而不是XML通常更容易。使用JSON,您的响应可能如下所示:

{
“人”:[
{
“姓名”:“吉姆”,
“年龄”:20岁
},
{
“姓名”:“鲍勃”
}
]
}
您可以使用点语法访问项目:

var age=data.people[0]。年龄;

例如,PHP有用于编码JSON的内置函数:。

这是将您的建议简单地合并为使用您的+if语句替换age变量的正确方法吗?如果是这样,那似乎仍然不起作用。它如何知道personElem是什么?这是内置函数吗?我稍后将查看JSON,因为这看起来确实是正确的It’很有趣,谢谢!
personElem
对应于
x[i]
在你的情况下。我已经在我的答案中更新了代码片段,以便更容易地直接进入你的代码。也许你必须了解更多关于代码的信息和一般情况。代码工作得非常好,所以我现在就接受答案,尽管我必须指出你的观察能力是无与伦比的@“一般来说,您可能需要学习更多关于JavaScript和DOM的知识。”.Ya’think?干杯;)您没有检查控制台中的错误消息吗?它会给您提供信息。
(The DTD and stuff it up here)
<people>
  <person>
    <name>Jim</name>
    <age>20</age>
  </person>
  <person>
    <name>Bob</name>
  </person>
  <person>
    <name>Tom</name>
    <age>20</age>
  </person>
  <person>
    <name>James</name>
    <age>20</age>
  </person>
  <person>
    <name>Richie</name>
    <age>20</age>
  </person>
</people>