0

好吧,我创建了一个简单的搜索器,但是当单词不存在时我需要返回一条消息,但是第一个单词可以正常工作,但是当我写最后一个单词时,循环立即中断,如何浏览所有单词并发送一个警报而不打破循环?

提前致谢

    <html>
<head>
    <title>buscador</title>
        <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
</head>

<script type="text/javascript">
$(function(){

/*iniciando el buscador*/
$("#buscar").click(function(){
    var dato =$("#palabra").val().toLowerCase();
    var myArray = [ "hello", "world","apple","bread","milk","pencil"];

        for ( var i = 0; i < myArray.length; i = i + 1 ){
            var flag = false;
                if(dato==myArray[i])
                {
                    alert("exist");
                    return false;
                }

                else if(dato!=myArray[i]){
                 flag=true;
                }
                if(flag) {alert("no exist"); return false;}

            }/*end foreach*/


});
});

</script>

<body>

<form method="post" action="" id="form-search">
<input type="text" id="palabra" name="palabra" placeholder="buscar"/>
<button id="buscar" name="buscar">Buscar</button>

</form>
</body>
</html> 
4

2 回答 2

0

尝试使用 $.inArray(value, array)

如果值不在数组中,则返回 -1

于 2013-10-30T20:51:04.597 回答
0

在最简单的情况下,我建议:

$('#buscar').click(function(e){
    e.preventDefault();
    var needle = $('#palabra').val().toLowerCase(),
        haystack = ['hello','world','apple','milk','bread','pencil'],
        found = haystack.indexOf(needle) == -1 ? 'Not found' : 'Found';
    console.log(found);
});

JS 小提琴演示

或者,如果您的浏览器不支持Array.indexOf(),您可以使用上述for循环:

$('#buscar').click(function(e){
    e.preventDefault();
    var needle = $('#palabra').val().toLowerCase(),
        haystack = ['hello','world','apple','milk','bread','pencil'],
        found = false;
    for (var i = 0, len = haystack.length; i < len; i++){
        if (haystack[i] === needle){
            found = true;
        }
    }
    console.log(found ? 'Found' : 'Not found');
});

JS 小提琴演示

于 2013-10-30T20:57:59.123 回答