#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, у этого есть