Установка selectedIndex после динамического создания опций
От: trogvar_zt  
Дата: 14.02.08 11:27
Оценка:
Всё просто. Есть пустой выпадающий список. В какой-то момент понадобится динамически задать в нём опции и выбрать необходимую. Данный пример отлично работает в Лисе и в Опере. МСИЕ почему-то наотрез отказывается устанавливать selectedIndex для списка.
<script>
function f1() {
    s = document.getElementById("sel");
    o = document.createElement("option");
    o.value = 10;
    o.innerHTML = "Text 10";
    s.appendChild(o);
    o = document.createElement("option");
    o.value = 20;
    o.innerHTML = "Text 20";
    s.appendChild(o);
    o = document.createElement("option");
    o.value = 30;
    o.innerHTML = "Text 30";
    s.appendChild(o);
    s.selectedIndex = 1;
}
</script>
<body onload="f1();">
    <select id="sel">
    </select>
</body>

Интересный момент, если прямо перед установкой selectedIndex сделать какой-то вывод, например alert('bla-bla-bla');, то индекс корректно установится.
Re: Установка selectedIndex после динамического создания опц
От: Alfred361 Россия  
Дата: 14.02.08 12:11
Оценка:
Здравствуйте, trogvar_zt, Вы писали:
_>Интересный момент, если прямо перед установкой selectedIndex сделать какой-то вывод, например alert('bla-bla-bla');, то индекс корректно установится.

window.setTimeout
Re: Установка selectedIndex после динамического создания опц
От: BishopMorton Россия  
Дата: 14.02.08 22:14
Оценка:
Здравствуйте, trogvar_zt, Вы писали:

_>Всё просто. Есть пустой выпадающий список. В какой-то момент понадобится динамически задать в нём опции и выбрать необходимую. Данный пример отлично работает в Лисе и в Опере. МСИЕ почему-то наотрез отказывается устанавливать selectedIndex для списка.


Надо так добавлять ( через options )
Так по идее должно работать без проблем

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> 
<title>Sample #1233</title>

<script type="text/javascript">

function f1() {
    s = document.getElementById("sel");
    
    for ( var i = 0; i < 10; i++ )
    {
         var o = document.createElement("option");
         o.value = i;
         o.text= "O" + i;

         s.options.add(o);
    }

    s.selectedIndex = 5;
}
</script>

</head>

<body onload="f1();">
    <select id="sel">
    </select>
</body>
</html>


Похожие проблемы
http://www.howtocreate.co.uk/wrongWithIE/?chapter=Add+Syntax

Да и вообще это космос какой-то — для браузеров это очень сложная задача — динамически добавлять опции

Тут вот, например, по другому извращаются
http://lists.evolt.org/archive/Week-of-Mon-20040315/156650.html

WBR,
Anton
When money talks... nobody checks the grammar.
Re: Установка selectedIndex после динамического создания опц
От: maxapet Россия  
Дата: 18.02.08 04:08
Оценка:
Здравствуйте, trogvar_zt, Вы писали:

_>Всё просто. Есть пустой выпадающий список. В какой-то момент понадобится динамически задать в нём опции и выбрать необходимую. Данный пример отлично работает в Лисе и в Опере. МСИЕ почему-то наотрез отказывается устанавливать selectedIndex для списка.

_>
_><script>
_>function f1() {
_>    s = document.getElementById("sel");
_>    o = document.createElement("option");
_>    o.value = 10;
_>    o.innerHTML = "Text 10";
_>    s.appendChild(o);
_>    o = document.createElement("option");
_>    o.value = 20;
_>    o.innerHTML = "Text 20";
_>    s.appendChild(o);
_>    o = document.createElement("option");
_>    o.value = 30;
_>    o.innerHTML = "Text 30";
_>    s.appendChild(o);
_>    s.selectedIndex = 1;
_>}
_></script>
_><body onload="f1();">
_>    <select id="sel">
_>    </select>
_></body>

_>

_>Интересный момент, если прямо перед установкой selectedIndex сделать какой-то вывод, например alert('bla-bla-bla');, то индекс корректно установится.

<script>
function f1() {
s = document.getElementById("sel");
o = document.createElement("option");
o.value = 10;
o.innerHTML = "Text 10";
s.appendChild(o);
o = document.createElement("option");
o.value = 20;
o.innerHTML = "Text 20";
o.selected = true;
s.appendChild(o);
o = document.createElement("option");
o.value = 30;
o.innerHTML = "Text 30";
s.appendChild(o);
}
</script>
<body onload="f1();">
<select id="sel">
</select>
</body>

В IE 6.0 точно работает
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.