将输入与数组值进行比较仅适用于单个值

时间:2015-09-26 09:31:22

标签: javascript html arrays

我有一些水果名称存储在一个数组中。如果用户输入已存储在数组中的食物名称,则应返回true,否则false

但是当我输入值true时它只返回Mango,否则总是返回false,为什么?

这是我的代码:

JSfiddle link

HTML:

<input type="text" id="value" />
<button onclick="check()">test</button>
<p id="pValue">
</p>

JavaScript的:

var myVar;

check = function() {
    myVar = document.getElementById("value").value;

    var fruits = ['Banana', 'Orange', 'Apple', 'Mango'];

    for(i = 0; i < fruits.length; i++) {
        if(myVar == fruits[i]) {
            document.getElementById("pValue").innerHTML = "true";
        }
        else {
            document.getElementById("pValue").innerHTML = "false";
        }
    }
}

1 个答案:

答案 0 :(得分:5)

这是因为你正在使用for循环,所以只有最后一个值才会返回true。如果您选择将此作为方法保留,则可以向循环添加break;。请参阅下面的更新小提琴::

var myVar;


check = function() {
    myVar = document.getElementById("value").value;
    var fruits = ['Banana', 'Orange', 'Apple', 'Mango'];

    for (i = 0; i < fruits.length; i++) {
        if (myVar == fruits[i]) {
            document.getElementById("pValue").innerHTML = "true";
            break;
        } else {
            document.getElementById("pValue").innerHTML = "false";
        }
    }
}
<input type="text" id="value" />
<button onclick="check()">test</button>
<p id="pValue">
</p>