Невозможно получить выбранное значение из списка в IE 8 - PullRequest
3 голосов
/ 12 ноября 2009

Невозможно получить выбранное значение из списка в IE 8

<select id="fileName" style="width: 100%;" size="3" name="uploadedfile">
<option id="my1Div">test1</option>
<option id="my3Div">test2</option>
<option id="my5Div">test3</option>
</select>

Я получаю значение, подобное следующему

var myvalue= document.getElementById("fileName").value;
alert(myvalue);

Ответы [ 6 ]

7 голосов
/ 12 ноября 2009
var select = document.getElementById("fileName");
var myvalue= select.options[select.selectedIndex].value;
alert(myvalue);

select.value появляется в спецификации DOM , но никогда не было реализовано IE. Свойство selectedIndex работает везде.

ОБНОВЛЕНИЕ: как anddoutoi указывает в комментарии к исходному вопросу, предполагается, что вы используете один элемент select.

6 голосов
/ 30 июня 2011
var selectElement = document.getElementById("selectElementId");
var selectedValue = selectElement.options[selectElement.selectedIndex].value;

Это должно быть изменено на:

var selectElement = document.getElementById("selectElementId");
var selectedValue = selectElement.options[selectElement.selectedIndex].text;

Изменение .value на .text решает проблему и совместимо со всеми браузерами.

4 голосов
/ 12 ноября 2009

Ваша проблема с вашим HTML. Цитируется из вашего комментария:

No simple Option box <select id="fileName" style="width: 100%;" size="3" name="uploadedfile"> <option id="my1Div">test1</option> <option id="my3Div">test2</option> <option id="my5Div">test3</option> </select>

Вы должны фактически указать значение для каждого <option>. Попробуйте это:

<select id="fileName">
    <option id="my1Div" value="test1">test1</option>
    ...
    <option id="my5Div" value="test3">test3</option>
</select>
1 голос
/ 12 ноября 2009
var selectElement = document.getElementById("selectElementId");
var selectedValue = selectElement.options[selectElement.selectedIndex].value;
1 голос
/ 12 ноября 2009
var listbox = document.getElementById("list");
for(var i=0; i<listbox.options.length; i++)
    if(listbox.options[i].selected)
        alert(listbox.options[i].value);

Что-то подобное?

Редактировать: опечатка!

0 голосов
/ 14 января 2010

Код для получения переменной columnName из поля 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;
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...