Да, многие из 'специальных' элементов, таких как <select>
и <table>
, не могут иметь свои innerHTML
, установленные в IE.
Если вы хотите установить innerHTML
из строки, вы должны обойти это окольным путем: установите innerHTML
временных div
элементов на <select>
+ ваши опции + </select>
, затем переместите все объекты опций от нового выбора до старого.
Обычно лучше использовать методы DOM вместо innerHTML
и экранированной разметки:
function setOptions(select, options) {
select.options.length= 0;
for (var i= 0; i<options.length; i++)
select.options[i]= new Option(options[i]);
}
var statemap= [
['Select country'],
['Karnataka', 'MP', 'UP', 'Jammu & Kashmir', 'Himachal Pradesh'],
['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Delaware', 'Florida']
];
function states_val() {
var states= statemap[document.getElementById('country').selectedIndex];
setOptions(document.getElementById('states'), states);
}