javascript程序的Else块总是执行,即使If块为真
Else block of javascript program always executes even If block is true
Else块即使为真也会继续执行。如果我删除else块,那么程序工作正常。我所要做的就是检查用户是否不在记录中,然后打印not found。
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>
通过删除else部分程序搜索名称并显示学生记录。Else部分应该检查student是否不在数组中,然后打印not found。
将break;
添加到if
语句中,因此循环停止计算。否则,只有最后一个结果将更新HTML。
尝试改变,
if( student.name.toLowerCase() === search.toLowerCase() )
{
message = studentReport(student);
print(message);
}
if( student.name.toLowerCase() === search.toLowerCase() )
{
message = studentReport(student);
print(message);
break;
}
如果在找到学生后中断,将找到第一个匹配(或显示没有找到学生)。如果您想显示找到的所有学生,我看到了两种方法,您可以创建找到的所有学生的列表,或者构造包含所有信息的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;
}
这将创建一个所有找到的学生的列表,从这里你可以很容易地渲染他们,如果列表是空的(即没有找到),你可以显示没有找到学生。
你当前的代码总是执行学生。Length乘以并设置变量msg,因此只有最后一个学生重要。如果搜索字符串与最后一个学生相同,将找到正确的字符串。
相关文章:
- if(foo!==null)的计算结果为true,即使foo为null
- AngularJS ng-if指令在移除元素之前,即使条件为false,也会短暂呈现
- 在if语句中检查这两个条件,即使第一个条件为false
- Javascripts 中的字符函数是 ret false,即使字符不满足 if 条件
- IF 连接调用 js 函数,即使它失败了
- 变量=true,即使if语句为false
- if子句是否遍历了它的所有语句,即使它'It’没有必要
- I'm在if语句中使用小于比较器;然而,即使它不应该;t、 它的评估结果为false
- $(window).滚动在if语句内部执行,即使它没有't不符合条件
- 即使条件已通过,ng if也不起作用
- jQuery代码在if语句中不运行,即使警告在if语句中发生
- Ng-src即使被ng-if隐藏也会执行
- 首先,即使为false, if语句也会继续运行
- POST方法即使if条件失败也能工作
- 表单提交,即使它被封装在if语句中,并且不满足条件
- javascript程序的Else块总是执行,即使If块为真
- 两个if语句总是连接在一起,即使它不为真
- if语句中的Javascript函数即使不满足条件也会继续运行
- Javascript代码在if条件内执行,即使条件为假
- if语句中的函数即使“if”语句仍然运行;不再满足