即使是真的,其他块也会继续执行。如果我删除else块,那么程序运行正常。我想要做的就是检查用户是否不在记录中,然后打印未找到。
var students =
[
{
name: "Linda",
track: "IOS",
points:' 50'
},
{
name: "Brian",
track: "Android",
points: '80'
},
{
name: 'Trish',
track: 'Rails Development',
points: '350'
}
];
var search = " ";
var student;
var message = " ";
function print ( msg )
{
var output = document.getElementById("output");
output.innerHTML = msg;
}
function studentReport( student )
{
var report = "<h2> Student name: " + " " + student.name + "</h2>";
report += "<p> Student track: " + " " + student.track+ "</p>";
report += "<p> Student points: "+ " " + student.points+ "</p>";
return report;
}
var button = document.getElementById("search");
/*search = prompt("Enter a name to search database or type quit to exit");*/
button.onclick = function( )
{
search = document.getElementById("txtField").value;
for( var i = 0; i < students.length; i++ )
{
student = students[i];
if( student.name.toLowerCase() === search.toLowerCase() )
{
message = studentReport(student);
print(message);
}
else
{
message = "<h2> Student not found </h2>";
print( message);
}
}
}
&#13;
<div class="container">
<form action="#">
<input type="text" name="search" id="txtField"><!--
--><a href="#" id="search"> Search </a>
</form>
<div id="output">
</div>
</div>
&#13;
删除其他部分程序搜索名称并显示学生记录。其他部分应检查学生是否不在数组中,然后打印未找到。
答案 0 :(得分:5)
将break;
添加到if
语句中,以便循环停止评估。否则,只有最后一个结果才会更新HTML。
答案 1 :(得分:1)
尝试改变,
if( student.name.toLowerCase() === search.toLowerCase() )
{
message = studentReport(student);
print(message);
}
到
if( student.name.toLowerCase() === search.toLowerCase() )
{
message = studentReport(student);
print(message);
break;
}
答案 2 :(得分:1)
如果您在找到学生后中断,您将找到第一场比赛(或显示没有找到学生)。如果要显示找到的所有学生,我会看到两种方法,您可以创建所有找到的学生的列表,也可以构建包含所有信息的html字符串。我将创建一个包含所有找到的学生的列表 - 创建一个非常相似的字符串。
findStudents = function(search) {
var foundStudents = [];
for(var i = 0; i < students.length; ++i) {
if(students[i].name.toLowerCase() === search.toLowerCase()) {
foundStudents.push(students[i]);
}
}
return foundStudents;
}
这将创建所有找到的学生的列表,从这里您可以轻松地全部呈现它们,如果列表为空(即没有找到任何内容),您可以显示没有找到学生。
您当前的代码始终执行students.length次并设置变量msg,因此只有最后一位学生才对。如果搜索字符串与上一个学生相同,则会找到正确的字符串。