即使是真,否则块也会继续执行。如果我删除了其他块,那么程序可以正常工作。我所要做的就是检查用户是否不在记录中,然后打印“未找到”。
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);
}
}
}<div class="container">
<form action="#">
<input type="text" name="search" id="txtField"><!--
--><a href="#" id="search"> Search </a>
</form>
<div id="output">
</div>
</div>
通过删除其他部分程序,搜索名称并显示学生记录。否则,部分应检查学员是否在数组中,然后打印“未找到”。
发布于 2015-08-19 15:28:23
将break;添加到if语句中,因此循环将停止计算。否则,只有最后一个结果将更新HTML。
发布于 2015-08-19 15:39:13
试着改变,
if( student.name.toLowerCase() === search.toLowerCase() )
{
message = studentReport(student);
print(message);
}至
if( student.name.toLowerCase() === search.toLowerCase() )
{
message = studentReport(student);
print(message);
break;
}发布于 2015-08-19 15:43:35
如果在找到学生后中断,您将发现第一次匹配(或显示没有找到学生)。如果您想显示所有找到的学生,我看到两种方法,您可以创建所有学生的列表,或者构造包含所有信息的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,所以只有最后一个学生才重要。如果搜索字符串与上一个学生相同,则将找到正确的字符串。
https://stackoverflow.com/questions/32099709
复制相似问题