2017-04-13 144 views
1

我想检查用户输入的值是否与我的数组中的某个值匹配。下面的代码是我到目前为止。除了现在不管我输入什么内容,总是说“不正确”。有人能告诉我为什么这是,并提供一个可能的修复?检查数组中是否存在值

function checkarray() { 
    var ID = document.getElementById('input2').value 
    for (var i = 0; i < array.length; i++) { 
    if (ID == array[i]) { 
     ID = "correct" 
    } else { 
     ID = "incorrect" 
    } 
    } 
    document.getElementById('message').innerHTML = ID; 
} 
+1

使用'array.indexOf(ID)= -1'看如果该值存在。基本上你需要打破循环,一旦找到了正确的循环 – gurvinder372

+0

你正在改变你在循环内检查的初始值本身..如果你想使用循环..使用另一个变量来设置正确/不正确,然后当你找到 –

+1

[break](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/break)循环,如果符合'correct'条件,则返回 – Satpal

回答

0

使用indexOf()array找到该项目的指标如下所示:!

var myArr = ['10','20','30','40','50'] 
 

 
function checkarray() { 
 
    var ID = document.getElementById('input2').value; 
 
    var i = myArr.indexOf(ID); 
 
    if(i > -1){ 
 
    document.getElementById('message').value = 'Exist'; 
 
    } 
 
    else{ 
 
    document.getElementById('message').value = 'Does not exist'; 
 
    } 
 
}
<input type="text" id="input2" /> 
 
<input type="button" onclick="checkarray()" value="Check"/> 
 
<input type="text" id="message" />

+0

我刚试过这个,但仍然说错了。如果数组包含单词而不是数字,代码会不同吗? – Karl

+0

对于字符串数组,不需要解析索引内的值。现在试试片段。 – Mamun

+0

也确保使用Array.prototype.includes而不是indexOf –