Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как поменять местами элементы в дереве элемента родителя? (https://javascript.ru/forum/events/3261-kak-pomenyat-mestami-ehlementy-v-dereve-ehlementa-roditelya.html)

rar11 01.04.2009 17:18

Как поменять местами элементы в дереве элемента родителя?
 
Есть DIV, в котором находятся другие DIV'ы. В этих же дивах находятся элементы типа INPUT и TEXTAREA. Хочу узнать, возможно ли в дереве главного дива изменить порядок расположения дочерних элементов (дивов). Скажем мне надо поменять местами какие-нибудь два дива. При этом, хорошо бы, что бы введенные данные в элементах INPUT и TEXTAREA не исчезли при смене.
Берем див: var div = document.getElementById('parentDiv');
С помощью div.childNodes[i] я могу получить любой дочерний див. Вот я и спрашиваю, есть ли методы реализации моего вопроса.

Kolyaj 01.04.2009 17:30

Любой dom-узел можно вставить в другое место с помощью методов appendChild и insertBefore, их состояние при этом не изменится.

rar11 01.04.2009 17:43

А можно ссылку на какой-нибудь примерчик или на документацию? Спасибо.

Kolyaj 01.04.2009 17:51

Ну допустим где-то в середине страницы есть элемент с id=test, тогда после выполнения следующего кода он окажется в конце страницы
document.body.appendChild(document.getElementById('test'));


Метод insertBefore первым параметром принимает вставляемый элемент, вторым элемент, перед которым нужно вставить.

З.Ы. С документацией яндекс поможет :)

rar11 01.04.2009 17:55

Спасибо. Буду разбираться.

Однако, если у кого есть какие-то мысли - просьба излагать:)

Kolyaj 01.04.2009 18:11

Мысли о чем?

rar11 01.04.2009 18:29

А случайно нет метода что бы вставить не перед, а после нужного элемента?

Kolyaj 01.04.2009 18:39

Для этого нужно вставить перед следующим :)
А следующий это свойство nextSibling у нужного элемента.

rar11 01.04.2009 18:53

Спасибо.


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