Показать сообщение отдельно
  #9 (permalink)  
Старый 06.10.2009, 11:05
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

приведу свой вариант
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    <title>Тег SELECT</title>
    <script>
      function ggg() {
        var to = document.getElementById("bbb");

        var div = document.createElement('div');
        div.innerHTML = '<select><option selected>1 selected</option><option>2</option></select>';

        var opt1 = document.createElement('option'),
            opt2 = document.createElement('option'),
            select = document.createElement('select');
        opt1.innerHTML = '1 selected';
        opt1.selected = true;
        opt2.innerHTML = '2';
        select.appendChild( opt1 );
        select.appendChild( opt2 );

        var children = div.firstChild.childNodes;
        while( children.length )
{ alert( children[0].innerHTML+', '+
         children[0].selected );
            to.appendChild( children[0] );
}
      }
    </script>
  </head>
  <body>  
    <form action="select1.php" method="post">
    <p><select id="bbb" name="hero"></select></p>
  </form>
  <input type="button" value="ins select" onclick="ggg()"/>
  </body>
</html>

если обращаться к option через children, то текущим становится выбранный пункт. Если же через div.firstChild.childNodes - последний. Можно даже добавить больше пунктов, чтобы проверить. Но не забываем что при appendChild option'ы удаляются из исходного select'а, значит один из вариантов поведения: в исходном select должен меняться текущий option (при удалении текущего). Но ie идет дальше (либо так изначально задумывалось, либо они пофиксили свое поведение), если мы обращаемся к appendChild через ссылку на childNodes, значит мы обходим всех детей select (менять текущий пункт не надо), если же через childNodes - значит мы хотим просто извлечь отдельный пункт
p.s. зацените теорию
Ответить с цитированием