2017-04-13 263 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 –