首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >即使代码块为真,javascript程序的其他块也总是执行。

即使代码块为真,javascript程序的其他块也总是执行。
EN

Stack Overflow用户
提问于 2015-08-19 15:25:40
回答 3查看 100关注 0票数 0

即使是真,否则块也会继续执行。如果我删除了其他块,那么程序可以正常工作。我所要做的就是检查用户是否不在记录中,然后打印“未找到”。

代码语言:javascript
复制
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);
			}

		}

		
		
	}
代码语言:javascript
复制
<div class="container">
		<form action="#">
			<input type="text" name="search" id="txtField"><!--
			--><a href="#" id="search"> Search </a>
		</form>
		

	<div id="output">

	</div>

	</div>

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-19 15:28:23

break;添加到if语句中,因此循环将停止计算。否则,只有最后一个结果将更新HTML。

票数 5
EN

Stack Overflow用户

发布于 2015-08-19 15:39:13

试着改变,

代码语言:javascript
复制
if( student.name.toLowerCase() === search.toLowerCase() )
        {
            message = studentReport(student);
            print(message);
        }

代码语言:javascript
复制
if( student.name.toLowerCase() === search.toLowerCase() )
        {
            message = studentReport(student);
            print(message);
            break;
        }
票数 1
EN

Stack Overflow用户

发布于 2015-08-19 15:43:35

如果在找到学生后中断,您将发现第一次匹配(或显示没有找到学生)。如果您想显示所有找到的学生,我看到两种方法,您可以创建所有学生的列表,或者构造包含所有信息的html字符串。我将创建一个所有找到的学生的列表--创建一个字符串非常相似。

代码语言:javascript
复制
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,所以只有最后一个学生才重要。如果搜索字符串与上一个学生相同,则将找到正确的字符串。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32099709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档