приведу свой вариант
<!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. зацените теорию