当有人询问特定名称时,我想从 XML 中获取统计信息,但我的 javascript 无法按我想要的方式工作。>br>
这是我的 XML:
<player>
<forward><name>Joe</name><stats>45</stats></forward>
<forward><name>Jack</name><stats>42</stats></forward>
<forward><name>Peter</name><stats>34</stats></forward>
<forward><name>Steve</name><stats>21</stats></forward>
<goalie><name>Pat</name><stats>2.34</stats></goalie>
</player>
这是我的 HTML(ajax):
<html>
<head>
<script language="JavaScript">
function LoadDoc(vValue) {
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "player.xml",true);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4) {
Answer(xmlhttp.responseXML, vValue);
}
}
xmlhttp.send(null);
}
function Answer(doc, ParamValue) {
var counts=doc.getElementsByTagName("forward");
for(var i=0;i < counts.length; i++){
alert(counts.length)
var vname = counts[i].getElementsByTagName('name');
alert(vname[i].firstChild.nodeValue)
var vstats = counts[i].getElementsByTagName('stats');
alert(vstats[i].firstChild.nodeValue);
if (vname[i].firstChild.nodeValue == ParamValue)
{
alert(stats[i].firstChild.nodeValue);
}
}
}
</script>
</head>
<body>
<form>
<input type="field" id="champ" />
<input type="button"
onclick="javascript:LoadDoc(document.getElementById('champ').value);" />
</form>
</body>
</html>
第一个警报很好地找到了 4 个元素
第二个警报给了我乔伊。
第三个警报为我提供了第一个前锋的 45(数字)统计数据
但奇怪的是,警报只启动一次...我没有 4 次警报,为什么它不在循环内转动 4 次?
知道出了什么问题吗?
或者找到统计数据的更好解决方案?
最佳答案
查看控制台是否有任何错误消息。乍一看,行 alert(stats[i].firstChild.nodeValue);
引用了一个未声明的变量 stats
,因此如果该行执行,脚本应该抛出一个 ReferenceError并终止,这将导致警报仅触发一次。
关于javascript - AJax,如何从 XML 文件中的节点获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20732607/