Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Странности с insertBefore() (https://javascript.ru/forum/events/18507-strannosti-s-insertbefore.html)

kazimira6 04.07.2011 11:32

Странности с insertBefore()
 
Вот код:
<body>
<div id="wrapper">

<div id="array_numb"><span>1111111111 22222 333333333 444444 555555555 66666666 7777777 8888 9999</span></div>


</div>
<script type="text/javascript">
var but = document.getElementById("array_numb");
but.onclick = function(){
var shell = document.createElement("div");
var childTxt = document.createTextNode("Ura!!!");
shell.appendChild(childTxt);
var x = document.getElementsByTagName("div")[0];
document.body.insertBefore(shell, x);
}
</script>
</body>

Вроде все очень понятно и просто, однако я никак не могу понять, если мы в var x = document.getElementsByTagName("div")[0]; выставляем вместо 0 - 1, то есть выбираем div#array_numb - insertBefore() не работает.( Почему??? Очень нужен ваш совет!)

ksa 04.07.2011 11:55

Цитата:

Сообщение от kazimira6
однако я никак не могу понять, если мы в
var x = document.getElementsByTagName("div")[0];
выставляем вместо 0 - 1, то есть выбираем div#array_numb - insertBefore() не работает. Почему???

Потому как в документации написано

Цитата:

Метод insertBefore
Синтаксис:
узел.insertBefore(newChild, refChild)


Метод insertBefore вставляет узел newChild в список детей данного узла перед узлом refChild и возвращает его в качестве результата. Если узел newChild уже был в списке, то он сначала удаляется, а затем добавляется. Пример: сценарий
А элемент

document.getElementsByTagName("div")[1]


не дитё элемента body... Он внук. :)

kazimira6 04.07.2011 12:22

Спасибо большое, Ksa. Вы - настоящий Профессор!


Часовой пояс GMT +3, время: 13:46.