InnerHTML IE 8 не работает должным образом?Сброс формы - PullRequest
2 голосов
/ 03 апреля 2010

Да, это работает в FF и Chrome, но по какой-то причине не работает в IE 8. Я использую переключатель, чтобы очистить раздел формы ... этот раздел является полем выбора, но я не хочу оставить область пустой - вместо этого я хочу сбросить ее до того, что было при загрузке страницы. В настоящий момент IE8 просто оставляет меня с пустым небольшим полем выбора.

Html:

<select id="city_select" disabled="true" name="location_id" onchange="show_search_button();"><option selected>Select your city</option> </select>

Javascript:

document.getElementById('city_select').innerHTML = "<option selected>Select your city</option>";

Я также пытался использовать location_id вместо city_select в javascript, но безрезультатно. InnerText и innerContent тоже не работают .. хотя inner.HTML работает в IE8 для более ранней функции, но это не попытка встроить HTML в форма. Кто-нибудь знает, почему это работает в Chrome и FF, но не в IE8? и есть ли решение этого? Спасибо за помощь, спасибо!

Ответы [ 2 ]

0 голосов
/ 16 июня 2012

Предполагается 4 способа назначения новых опций для элемента select. Некоторые работают в некоторых сценариях, а другие работают в других. Смотрите здесь - Как добавить параметры в

Для меня решение Robusto не сработало по трем причинам:

1) sel переменной в первой строке присваивается document.getElementById('city_select').options.length = 0; вместо простого удержания элемента select (для последующего использования в 4-й и 5-й строке) и последующего удаления параметров в следующей строке, например:

var sel = document.getElementById('city_select');
sel.options.length = 0;

2) 4-я строка sel.options.push(opt) (или более поздняя версия sel.options[0] = opt) выбрасывает Объект не поддерживает это свойство или метод Ошибка. Вместо этого используйте это:

sel.appendChild(opt);

3) Помимо присвоения значений опциям, вы также должны назначить текст для отображения. Вы делаете это так:

opt.innerText = "Select Your City - displayed";

Поэтому, чтобы подвести итог всего куска:

var sel = document.getElementById('city_select');
sel.options.length = 0;
var opt = document.createElement('option');
opt.value = "Select Your City";
opt.innerText = "Select Your City - displayed";
sel.appendChild(opt);
sel.selectedIndex = 0;
0 голосов
/ 03 апреля 2010

Попробуйте это:

document.getElementById('city_select').options.length = 0;

Затем создайте новый параметр и поместите его в массив параметров выбора. Опции - хитрый бит, который не ведет себя как другая разметка.

Отредактировано, чтобы показать, как создать параметр:

var sel = document.getElementById('city_select').options.length = 0;
var opt = document.createElement('option');
opt.value = "Select Your City";
sel.options.push(opt);
sel.selectedIndex = 0;
...