Добавление параметров выбора - проблема / решение IE вызывают другие проблемы браузера - PullRequest
1 голос
/ 18 октября 2010

У меня есть <select>, который в зависимости от предыдущих параметров заполняется переменной с кучей значений <option>.

Естественно, потому что IE не работает с innerHTML, я должен добавить этот шаблон к <select>, который теперь прекрасно работает в IE.ОДНАКО мне теперь нужен способ очистить опции выбора из предыдущего поиска и в FF остановить его падение до последней <option> в списке.

Ответы [ 3 ]

1 голос
/ 18 октября 2010

Надежный способ очистки опций из <select>:

while( select_control.length > 0 )
     select_control.options[0] = null

Некоторые браузеры очищают список, если вы делаете select_control.length = 0, но я считаю это ненадежным.

Опциональный способ вставки:

var new_option = new Option(text, value)
try {
    select_control.add(new_option, select_control.options[0])
} catch(e) {
    select_control.add(new_option, 0)
}

0 - это индекс предмета, который вы хотите получить раньше. Чтобы добавить его в конец, сделайте это вместо:

select_control.options[select_control.length] = new_option

Это также будет работать, если вы хотите заменить конкретный элемент, указав индекс существующей опции.

1 голос
/ 18 октября 2010

Просто перепишите весь блок выбора с помощью innerHTML, который всегда работает.

0 голосов
/ 18 октября 2010

Хорошо, используя YUI3:

    node.setContent(template); //removes old children, sets new template as content.
    node.set('selectedIndex', 0); //forces FF to select the first one

Отредактировано правильными методами.

...