Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Клонирование DOM объекта или как вставить один div много раз (https://javascript.ru/forum/misc/37002-klonirovanie-dom-obekta-ili-kak-vstavit-odin-div-mnogo-raz.html)

Jmunb 03.04.2013 19:53

Клонирование DOM объекта или как вставить один div много раз
 
Доброго времени суток.

Столкнулся с такой проблемой, есть некий код который призван удвоить количество дивов на странице:
var divLength = document.getElementsByTagName('div').length;
var bodyLink = document.getElementsByTagName('body')[0];
for(var i=0; i < divLength; i++) {
    bodyLink.appendChild(document.createElement("div"));
}

Но при этом в цикле DIV элемент создается каждый раз, и это меня не устраивает, хотел закешировать его:
var divLength = document.getElementsByTagName('div').length;
var bodyLink = document.getElementsByTagName('body')[0];
var mayDiv = document.createElement("div");
for(var i=0; i < divLength; i++) {
    bodyLink.appendChild(mayDiv );
}

Но тогда объект передается по ссылке и на деле вставляется только 1 элемент.
Пробовал прибегнуть к замыканиям, но результат был тем же, вставляется только 1 элемент.

Возможно ли при помощи каких либо техник создавать объект единожды, и вставлять его нужное количество раз?

SV0L0CH 03.04.2013 19:56

Так и дожно работать, когда элемент вствляется в новое место, он удаляется из предыдущего.

Jmunb 03.04.2013 20:12

Я это понимаю, поэтому и спрашиваю есть ли какое либо решение данной проблемы, или нет? Так как создавать каждый раз новый объект накладно.

danik.js 03.04.2013 20:24

Цитата:

Сообщение от Jmunb
Возможно ли при помощи каких либо техник создавать объект единожды, и вставлять его нужное количество раз?

Вы понимаете что это исключающие друг друга требования?
Можете с cloneNode поиграться. Но и при этом - объект будет создаваться вновь и вновь.

Jmunb 03.04.2013 20:50

То есть способа обратится на прямую к объекту в js нет?

danik.js 03.04.2013 21:47

Цитата:

Сообщение от Jmunb
То есть способа обратится на прямую к объекту в js нет?

А это вобще как понимать? JavaScript для этого и создавался вобще-то ))

Aetae 04.04.2013 01:51

Цитата:

Сообщение от Jmunb (Сообщение 244174)
То есть способа обратится на прямую к объекту в js нет?

Есть, имеено потому и пропадает див из старого места попадая на новый.)
2 дива - это уже 2 разных объекта, как ни крути.

nikita.mmf 04.04.2013 14:58

var divLength = document.getElementsByTagName('div').length;
var bodyLink = document.getElementsByTagName('body')[0];
var mayDiv = document.createElement("div");
for(var i=0; i < divLength; i++) {
    bodyLink.appendChild( mayDiv.cloneNode( true ) );
}


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