IE6 и IE7 Как получить выбранный объект опции из поля выбора

#javascript #internet-explorer #option

#javascript #internet-explorer #html-выберите

Вопрос:

У меня есть такой код:

 var a = selectBox.options[selectBox.selectedIndex];
  

Если я выполню:

 alert(a);
  

Используя FF, Chrome, Opera и т.д… Я получаю:

[объект HTMLOptionElement]

Это именно то, что я хочу. Если я использую IE6 или IE7, я получаю:

[объект]

Без каких-либо ожидаемых свойств опции вообще.
Это означает, что в качестве дочернего узла нет TextNode и свойства value. Как я могу решить эту проблему? Также, если я попытаюсь использовать этот узел для добавления в другое поле выбора, IE выдает исключение:

 SCRIPT87: Invalid argument.
  

Меня попросили создать программу, совместимую с IE6, но я не могу найти способ заставить ее работать. Мне нужно перемещать объекты опций, а IE7 мне этого не позволяет.

Редактировать по запросу:
контекст HTML

                 <select id="identification">
                    <option value="1">1</option>
                    <option value="2">2</option>
                    <option value="3">3</option>
                </select>

                    <select id="toBeFilled" multiple>
                </select>
  

Важное замечание:
То, что я делаю, НИКОГДА не знает список имен и идентификаторов документа. Он знает только узлы, которые он будет использовать для работы в документе.
Когда я указываю узел, я имею в виду, например, какой document.getElementById() возвращает.

Комментарии:

1. Не могли бы вы использовать jQuery? $(‘select’).find(‘option:selected’) …. работа выполнена.

2. @Alistair Laing «работа выполнена», не сработало.

Ответ №1:

var a = selectBox.options[selectBox.selectedIndex]; определенно предоставит вам Option объект (или HTMLOptionElement ) во всех браузерах, включая IE 7, 6, 5, 4 и, возможно, 3 (хотя IE может не дать вам особенно полезного значения при вызове toString() , как вы заметили). Это будет иметь text value свойства и, которые отражают текст и значение параметра. Если это не работает для вас, значит, проблема в другом месте вашего кода.

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

 var newOption = new Option(a.text, a.value);
  

Комментарии:

1. Я попробую это сделать. Похоже, это единственный способ сделать это, который понимает IE6 / IE7.

Ответ №2:

var a = selectBox.options[selectBox.selectedIndex].value; поможет вам

(Оповещения могут печатать только строки и числа, но не объекты. Вы можете использовать «console.log ( a)» в Firebug и IE8 с помощью панели инструментов разработчика

Комментарии:

1. Нет. Я получаю пустую строку. Мне нужно значение, а не пустая строка

2. Можете ли вы опубликовать HTML-код, в котором включен JS?

3. Предупреждение выводит toString() объекта.

4. В этом случае IE6 и IE7 отображают пустую строку. Между тем, у этого параметра нет атрибута value, у этого есть