在下面的代码中,我有一个表单输入。当用户搜索恰好在数组中的字符串时,我希望它输出查询。当用户碰巧搜索不在数组中的字符串时,我想输出错误消息。问题是当用户搜索数组中除item [0]之外的字符串(在本例中为 ipsum )时,他们会收到错误消息然后他们的查询返回。我想知道是否可以使用下面的代码来解决这个问题,或者是否应该采用不同的方法(我知道这是一个意见)。
<form>
<input type="text" id="formInput"></input>
<input type = "button" id="search"></input>
</form>
<script>
var search = document.getElementById("search");
var data = ["lorim", "ipsum"];
search.onclick = function(){
var formInput = document.getElementById("formInput").value;
for (i=0; i<data.length; i++){
if (data[i] === formInput) {
alert(data[i]);
}
else{ alert("not working yet"); }
}
};
</script>
答案 0 :(得分:1)
:)坚持下去。
要记住的是,在搜索完所有内容之后,你只能说“没有找到它”。所以...保持旗帜:))
var didntFind = true;
for (var i = 0; i < data.length; i++) {
if (data[i] === formInput) {
alert(data[i]);
didntFind = false;
break;
}
}
if (didntFind) alert('error!');
您还可以在循环后检查i === data.length-1
,但上面的代码应该不会让您感到困惑。希望这有帮助
答案 1 :(得分:1)
您不需要循环,只需使用indexOf:
search.onclick = function(){
var formInput = document.getElementById("formInput").value;
if (data.indexOf(formInput) === -1) {
// they entered a bad search term
return;
}
// do the rest of your search logic
};