Получение значения windows SELECT в Internet Explorer

У меня есть поле выбора:

    Camera   Microphone   Tripod   

И у меня есть этот JavaScript:

 var item1= document.getElementById("item1").value; 

item1 всегда показывает пустой, никогда не выбран вариант. Однако это работает в firefox .

Использование item.value работает для всех браузеров, кроме очень старых (Netscape 4 – кто?). Причина, по которой это не работает в этом случае, заключается в том, что у вас нет атрибута value в параметрах. Вы должны объявить значение для каждого атрибута. То, что у вас есть, – это только свойство «text», которое обычно по умолчанию присваивает значение всякий раз, когда объявлено значение. В качестве альтернативы вы можете нажать некоторый код в событии onload windows, чтобы сделать «значение» каждого из этих параметров таким же, как «текст».

Третий способ использования приведенного ниже кода – это старомодный способ:

 var s = document.getElementById('item1'); var item1 = s.options[s.selectedIndex].value; 

Поскольку ваши tags параметров не имеют атрибута «значение» IE6, а IE7 возвращает вам пустую строку. Вы должны прочитать значение из поля «текст» объекта Option следующим образом:

 var item1 = s.options[s.selectedIndex].text; 

в item1 вы получите нужное вам значение, не нарушая совместимость с Firefox и IE 8.

В качестве добавления к ответу # 1 будьте осторожны, поскольку

 var s = document.getElementById('item1'); var item = (-1 != s.selectedIndex)? s.options[s.selectedIndex] : null; 

РЕДАКТИРОВАТЬ

Комментарий Per Tim, s.selectedIndex может быть -1, если вы установите его с помощью JavaScript или создаете пустой

Код, чтобы получить vaiable columnName из windows SELECT, называемого layerDetails.styleColumn (тег SELECT имеет одинаковое имя и идентификатор), который работает во всех браузерах …

 var columnName = document.getElementsByName('layerDetails.styleColumn')[0].value; if ( columnName == null || columnName == '' ) { columnName = document.getElementById('layerDetails.styleColumn').value; } if ( columnName == null || columnName == '' ) { var select = document.getElementById('layerDetails.styleColumn'); columnName= select.options[select.selectedIndex].value; if ( columnName == null || columnName == '' ) { columnName= select.options[select.selectedIndex].text; } }