0

在下面的代码中,我有一个表单输入。当用户搜索恰好在数组中的字符串时,我希望它输出查询。当用户碰巧搜索不在数组中的字符串时,我想输出一条错误消息。问题是当用户在数组中搜索除 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>
4

2 回答 2

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 之后检查 if ,但上面的代码应该不会让您感到困惑。希望这可以帮助

于 2012-10-05T19:22:17.693 回答
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
};
于 2012-10-05T19:22:42.277 回答