2014-11-13 4 views
0

Я знаю, как получить значение параметра из его индекса, как показано ниже в разделе кода.Как получить индекс опциона из его значения

Есть ли способ, чтобы получить соответствующий индекс, передавая текст/значение т.е. «белый» или «синий»

<select id="Color"> 
<option>white</option> 
<option>blue</option> 
</select> 

var x = document.getElementById("Color").selectedIndex; 
var y = document.getElementById("Color").options; 
alert("Index: " + y[x].index + " is " + y[x].text); 
+2

Там действительно нет другого пути, кроме перебора множества вариантов. –

+0

oops ... Я разочарован, узнав об этом. тем не менее, спасибо за ваш быстрый ответ. –

+0

, но есть ли функция знать, существует ли элемент в массиве или нет? array.prototype.find является экспериментальным и не рекомендуется использовать в производственном коде. Есть ли другой способ, кроме итерации всего массива и проверки на каждой итерации. –

ответ

0

Это возможно с JQuery.

function returnIndex(value) { 
    var selected = $("option:contains(" + value + ")")[0]; 
    if (selected) { 
     selected.selected = "true"; 
     return selected.index; 
    } else { 
     console.log("Value does not exist"); 
    } 
} 

var x = document.getElementById("Color").selectedIndex; 
var y = document.getElementById("Color").options; 
var chosen = document.getElementById("Color").value; 
alert("Index: " + returnIndex(chosen) + " is " + y[x].text); 
+0

@AbhijitGhosh Вы пробовали это? – Xenyal

0

вы можете найти индекс элемента следующим способом

var z = "blue"; 
var y = document.getElementById("Color").options; 
var myArray = []; 
for(var i=0;i<y.length;i++) 
{ 
    myArray.push(y[i].text); 
} 
var elementPos = myArray.map(function(x) {return x; }).indexOf(z); 
alert(elementPos); 
+0

Да, это хороший способ ... но точка по-прежнему я не могу избежать итерации. в любом случае большое спасибо –

Смежные вопросы