2015-10-15 43 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

相关问题