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

标签 javascript html arrays

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

但是当我输入值Mango时它只返回true,否则总是返回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";
        }
    }
}

最佳答案

这是因为您使用的是 for 增量循环,因此只有最后一个值才会返回 true。如果您选择将其保留为方法,则可以将 break; 添加到循环中。请参阅下面更新的 fiddle ::

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>

关于javascript - 将输入与数组的值进行比较仅适用于单个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32795654/

相关文章:

php - 多行字符串到数组

c++ - 如何创建一个 boost 矩阵数组?

创建 4D 查找表

javascript - 如何在 opencart 2.1 中删除注册帐户表单中的电子邮件验证?

javascript - 如何在 JavaScript 中用空格替换双 2 个连续引号

html - CSS 自定义 div 高度

javascript - 在单独的函数中使用来自两个句柄的 jquery-ui 范围 slider 的值

javascript - 保留 $http.get 异步结果处理的变量值

javascript - 通过Js发送时如何隐藏名字

html - 如何拉伸(stretch)元素以填充具有固定宽度的两个元素之间的空间?