(JS) вставка элемента в определенное место

i'm_novice
Дата: 29.08.2006 17:09:57
доброе время суток!

есть див, как, типа, контейнер. в нем есть какое-то кол-во других однотипных
дивов. нужно реализовать добавление нового элемента (дива). у существующих
элементов есть класс и айдшники, соответственно "пример" добавляемого элемента
мне известен. нужно добавить его последним. помогите, как это сделать?
appendChild'oм ничего не получилось...
4m@t!c
Дата: 29.08.2006 17:16:03

Hello i'm_novice,
"Ничего" не могло получиться. Как минимум должна была получиться ошибка выполнения
скрипта. Покажите код, укажите ошибку.
----------------------------------------
Артисты не приехали,
приехали цыгане


Posted via ActualForum NNTP Server 1.3

i'm_novice
Дата: 29.08.2006 17:45:47
container = document.getElementById('addContainer');
element = document.getElementById('addElement1');
container.appendChild(element);
после выполнения никаких ошибок выполнения. визуально ничего не изменилось. я
думаю потому, что элемент добавился, но на том же месте, "вместо" себя самого.
Black
Дата: 29.08.2006 17:54:21
// Определяем нод
var div = document.createElement(div);
// Проставляем атрибуты
input.setAttribute( 'id', 'x' );
...
// Добавляем нод
document.getElementById('head').appendChild(div); 
i'm_novice
Дата: 29.08.2006 18:13:44
Николай aka Motodor


так у меня уже есть элемент с необходимыми аттрибутами.
а в диве может содержаться что угодно со своими аттрибутами. предлагаете
создавать див со всеми входящими в него элементами? у которых тоже есть свои
атрибуты, которых я заранее не знаю.
мне его нужно скопировать уже существующий див и поменять, где нужно, id (это
не проблема).
4m@t!c
Дата: 29.08.2006 18:24:37
Нельзя вот так вот взять и скопировать узел с всеми его id и другими атрибутами. ID должен быть уникальным. Вариантов 2:
1. Написать рекурсивную функцию, которая будет проходится по всем вложенным узлам исходного узла и по результатам прохода будет создавать клон с нужными атрибутами в новом месте. Под созданием подразумевается createElement и т.д.
2. Вариант попробовать изобрести велосипед с помощью innerHTML. При этом все равно придется создавать место для клона, а так же проследить за тем, что бы все ID оказались уникальными.
----------------------------------------
Артисты не приехали, приехали цыгане
i'm_novice
Дата: 29.08.2006 22:03:39
4m@t!c

1. Написать рекурсивную функцию, которая будет проходится по всем вложенным
узлам исходного узла и по результатам прохода будет создавать клон с нужными
атрибутами в новом месте. Под созданием подразумевается createElement и т.д.

объемный имхо вариант, т.к. кроме класса элемента мне ничего неизвестно: ни id,
ни названия атрибутов, ни их содержание. вернее известно, но тогда надо будет
под кажый "копируемый" узел писать много проверок, много кода. не хотелось бы...

4m@t!c

2. Вариант попробовать изобрести велосипед с помощью innerHTML. При этом все
равно придется создавать место для клона, а так же проследить за тем, что бы все
ID оказались уникальными.

уже изобретен. но он хорошо ездеет только когда вложенный узел один.

можно хранить "шаблоны" узлов в базе. по необходимости доставать и вставлять в
документ, естественно меняя id. но... нагрузка на сервер, время ожидания...
ерудна наверное... объясните молодому, неопытному...
4m@t!c
Дата: 30.08.2006 10:38:52
автор
объемный имхо вариант, т.к. кроме класса элемента мне ничего неизвестно: ни id,
ни названия атрибутов, ни их содержание. вернее известно, но тогда надо будет
под кажый "копируемый" узел писать много проверок, много кода. не хотелось бы...

Не понимаю, о каких проверках идет речь. Взяли узел, прочли все его атрибуты с помощью attributes, в цикле с нужными изменениями перенесли в новый узел; проверили, если у узла есть лвоженные элементы, то повторили перенос вложенных узлов.
----------------------------------------
Артисты не приехали, приехали цыгане
maXmo
Дата: 30.08.2006 16:33:47
в спецификации есть такое
4m@t!c
Дата: 30.08.2006 17:45:49
Совсем из головы вылетело! А я тут Лисапеды изобретаю....
----------------------------------------
Артисты не приехали, приехали цыгане