У меня есть следующий код - он используется для загрузки раскрывающегося списка, когда пользователь щелкает раскрывающийся список только с загруженной опцией по умолчанию, поскольку этот раскрывающийся список довольно большой, и IE это не очень нравится. Вот код:
function populateDropDown(id, code) {
var currentSelect = document.getElementById(id);
<%--Don't enable the dropdown if it has more than one entry already - assume this to be populated.--%>
if(currentSelect.length == 1) {
currentSelect.remove(0);
var selectedIndex = 0;
for(var index = 0; index < codes.length; index++) {
var newOption = document.createElement('option');
newOption.value = codes[index];
newOption.text = values[index];
try {
currentSelect.add(newOption, null); // standards compliant
}
catch(ex)
{
currentSelect.add(newOption); // IE only
}
if(codes[index] == code) {
selectedIndex = index;
}
}
currentSelect.selectedIndex = selectedIndex;
}
}
Этот код работает в Opera 9.x, IE 7, но не в IE 6 (я тестирую в Opera, потому что мне нравится Opera Dragonfly, но он действительно должен работать только в IE 7 и 6).
В IE 6 код заполняет раскрывающийся список, но он устанавливает выбранное значение первым значением в раскрывающемся списке, а не выбранным значением. Выбранному значению присваивается правильное значение в двух других упомянутых браузерах.
Я ни в коем случае не гуру Javascript - поэтому, если кто-то знает, почему IE 6 делает это и как его обойти, это будет оценено.
Также обратите внимание, что в комментарии есть комментарий JSP - он удаляется перед отправкой этого Javascript в браузер (это не недействительный комментарий).