2015-10-15 44 views
-2

我希望我的問題不是太不連貫。我是新手。如何查找與文本框值相匹配的數組的位置編號?

var inputTextbox = document.getElementById("txtinput"); 
var outputTextbox = document.getElementById("txtoutput"); 

var upperGrade = new Array("S", "M", "C", "T") 
var lowerGrade = new Array("s", "m", "c", "t") 
if (inputTextbox.value.contains(upperGrade) or inputTextbox.value.contains(lowerGrade)) 
{ 
    var arrayPosition= ?? 
} 

我想檢查inputTextbox值是否與我的數組列表中的值匹配。如果是這樣,我想將匹配值的位置號碼分配給arrayPosition。

如果用戶的輸入匹配upperGrade數組列表(「M」)中的第二個位置,那麼我想將數字2分配給arrayPosition。

我需要用'if'語句和不使用循環來做到這一點。

+0

是'indexOf()'你想要什麼? [更多這裏](http://www.w3schools.com/jsref/jsref_indexof_array.asp) – FirstOne

+0

這有道理嗎? INT指數= upperGrade.indexOf( 「M」) 將索引被分配2值?由於「M」是upperGrade數組列表中的第二個位置? – Calisto

+0

或多或少。實際上,指數計數從'0'開始。而且,你總是會得到'1'的結果,所以你應該使用'inputText'中的值。看看我的答案。 – FirstOne

回答

0
var inputTextbox = document.getElementById("txtinput"); 
var outputTextbox = document.getElementById("txtoutput"); 

var upperGrade = new Array("S", "M", "C", "T") 
//var lowerGrade = new Array("s", "m", "c", "t") no need to have another array just for lower case AS LONG AS IT'S THE SAME LETTERS 

var pos = upperGrade.indexOf(inputTextbox.value.toUpperCase()); // pos will be -1 if not found 

請注意,索引(位置)開始於0。所以M將在位置1

假設你要輸出內部outputTextbox

outputTextbox.value = (pos >= 0) ? pos : 'NOT FOUND'; 
// As RobG said, if you want the 'actual' position, you can use it like this: 
// outputTextbox.value = ++pos || 'NOT FOUND'; 

位置。如果是從inputTextbox值是upperGrade數組中,該outputTextbox將充滿的位置。否則,NOT FOUND將成爲它的內容。

+0

OP希望從1開始索引,所以'outputTextbox.value = ++ pos || 'NOT FOUND''會做。 – RobG

+0

偉大的這正是我正在尋找!你甚至不需要使用if語句!謝謝。 我不明白你爲什麼回答得到一個大拇指朝下,或爲什麼我的問題不斷下降。我需要得到我的代言人,這樣我才能給大家一個大拇指來對付這裏所有的負面人物! – Calisto

相關問題