【发布时间】:2012-03-05 08:57:13
【问题描述】:
编辑 谢谢大家的帮助。我已经使用 try and catch (err) 对脚本进行了修改,但是,当代码运行时,我仍然没有收到警报。我还用“studentInfo[i].getElementsByTagName("id")[0].childNodes[0] 替换了“studentInfo[i].getElementsByTagName("id")[i].childNodes[i].nodeValue"。 nodeValue" 以及所有类似的引用,除了现在,它甚至不会返回第一个循环。由于某种原因,它似乎在“捕获”之前退出了该功能。我已将更改标记为粗体。
我知道这个网站上已经发布了很多,但似乎没有一个答案能够帮助我。我有一个 for 循环,在第一个循环之后停止迭代。第一个循环的数据是正确的,但我需要它继续循环。我使用了几个不同的 lint 工具,他们说我的代码是有效的,所以我必须强迫它以某种方式退出循环。请有人帮我弄清楚我做错了什么。
<html>
<head>
<title>Tardy Reporting</title>
<script type="text/javascript" src="students.js">
</script>
</head>
<body>
<h1>Scan in Student ID</h1>
<form method="POST" name="idForm" id="idForm" />
<input type="text" name="idNumber" id="idNumber"/>
<input type="button" name="Search" value="Search" onClick="getId(document.idForm.idNumber.value);" />
</form>
<br></br>
<div id="div1"></div>
<p>
</body>
</html>
var ajxObj;
if(window.XMLHttpRequest){
ajxObj = new XMLHttpRequest();
}
else{
ajxObj = new ActiveXObject('Microsoft.XMLHTTP');
}
ajxObj.open("GET","studentbase.xml",false);
ajxObj.send();
xmlData = ajxObj.responseXML;
var studentInfo = xmlData.getElementsByTagName("student");
function getId(studentId) {
**try{**
for(var i = 0; i < studentInfo.length; i++) {
if(studentId == **studentInfo[i].getElementsByTagName("id")[0].childNodes[0].nodeValue || studentId === studentInfo[i].getElementsByTagName("name")[0].childNodes[0].nodeValue**){
document.getElementById('div1').innerHTML=(studentInfo[i].getElementsByTagName("name")[0].childNodes[0].nodeValue);
}
else {
document.getElementById('div1').innerHTML="Error: Not Found"
}
}
**}catch (err){
alert(err.ToString());
}**
}
<?xml version="1.0" encoding="UTF-8" ?>
<thebase>
<student>
<id>50011234</id>
<name>Mike Simpson</name>
<grade>n/a</grade>
<teacher>George Washington</teacher>
<tardies>0</tardies>
</student>
<student>
<id>50012345</id>
<name>Greg Pollard</name>
<grade>n/a</grade>
<teacher>Darth Vadar</teacher>
<tardies>0</tardies>
</student>
<student>
<id>50013456</id>
<name>Jason Vigil</name>
<grade>n/a</grade>
<teacher>Obi Wan Kenobi </teacher>
<tardies>0</tardies>
</student>
</thebase>
【问题讨论】:
-
您可能只想在循环之前添加
console.log(studentInfo)以查看实际返回的内容。将其发布到您的问题中,我们将查看存在哪些错误。 -
我得到“[object HTMLCollection]”
标签: javascript html xml ajax for-loop