for循环在第一次迭代时停止
for loop stops at first iteration
编辑 感谢大家的帮助。我已经用try-and-catch(err)对脚本进行了修改,但是,当代码运行时,我仍然没有得到警报。我还将"studentInfo[I].getElementsByTagName("id")[I].childNodes[I].nodeValue"替换为"studentInfo[I].get-ElementsBytagName("id")[0]。childNodes[0]。nodeValue"以及所有类似的引用,只是现在,它甚至不会返回第一个循环。由于某种原因,它似乎在点击"catch"之前就退出了函数。我用粗体标记了这些变化。
我知道这个网站上已经发布了很多,但似乎没有一个答案能帮助我。我有一个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>
我怀疑您的代码抛出了一个错误,而您没有意识到这一点。我怀疑引用"studentInfo[I].getElementsByTagName("id"
试着在"for"循环周围放一个"Try…catch",就像这样:
function getId(studentId) {
try {
for(var i = 0; i < studentInfo.length; i++) {
if (studentId == studentInfo[i].getElementsByTagName("id")[i].childNodes[i].nodeValue || studentId === studentInfo[i].getElementsByTagName("name")[i].childNodes[i].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());
}
}
if
语句中需要三个等号(即"==")。
相关文章:
- 循环中的切换脚本只适用于第一次迭代
- 尝试在两次迭代中警告同一选择器的值,在第一次迭代中得到正确的值,而在第二次迭代中获得不正确的值.为什么?
- 执行在外循环的第一次迭代后停止
- 此代码在第一次迭代时给出 0 作为高度和宽度,第二次给出正确的尺寸
- for循环只迭代一次
- 不读取 while 循环中表单元素第一次迭代 ASP.NET
- 如何识别 for.in 循环中的第一次迭代
- setTimeout在Internet Explorer中的第一次迭代后不会触发
- 检查地图中是否有第一次迭代的方法
- for 循环仅在第一次迭代时执行
- for循环在第一次迭代时停止
- Javascript mouseover/mouseout动画仅适用于第一次迭代
- 在第一个数组的下一次迭代之前,遍历一个数组并连接另一个数组的所有值
- 当我将src附加到图像时,每N秒迭代一次
- 当试图从元素中删除类时,For循环只迭代一次
- 每个函数在XML中迭代两次
- 对对象数组只迭代一次
- Javascript - for循环只迭代一次
- 迭代一次的行值并添加
- JavaScript在同一循环中每x次迭代一次循环