如果块为真,则javascript程序的其他块总是执行

时间:2015-08-19 15:25:41

标签: javascript html if-statement

即使是真的,其他块也会继续执行。如果我删除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;
&#13;
&#13;

删除其他部分程序搜索名称并显示学生记录。其他部分应检查学生是否不在数组中,然后打印未找到。

3 个答案:

答案 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,因此只有最后一位学生才对。如果搜索字符串与上一个学生相同,则会找到正确的字符串。