Как добавить элемент DOM в пустой элемент в JavaScript?

У меня есть куча объектов, которые возвращают DOM-дерево, которое я затем использую для добавления к элементу. Например,

var elem = document.createElement('div');
elem.appendChild(callSomePrototypesMethod());
elem.appendChild(callSomePrototypesMethod());
elem.appendChild(callSomePrototypesMethod());

и я в конечном итоге закончу что-то вроде:

<div>
<div id="...">...</div>
<div id="...">...</div>
<div id="...">...</div>
</div>

Эти три DIV были созданы сторонним кодом, и я оборачиваю их вокруг своего тега DIV здесь, но вместо этого я хочу просто добавить их к пустому элементу, но это не работает:

var elem = document.createElement('');
elem.appendChild(callSomePrototypesMethod());
elem.appendChild(callSomePrototypesMethod());
elem.appendChild(callSomePrototypesMethod());

Ожидаемые результаты:

<div id="...">...</div>
<div id="...">...</div>
<div id="...">...</div>

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


person Tower    schedule 21.11.2009    source источник


Ответы (2)


Вот для чего нужны фрагменты документа. Вы можете создать новый фрагмент с помощью document.createDocumentFragment() и использовать его, как если бы это был отдельный элемент.

person Christoph    schedule 21.11.2009
comment
Я рад, что вы смогли прочитать мысли ОП и определить, что он хотел носить с собой NodeList, но, как написано, вопрос, похоже, касался элемента в дереве. - person bmargulies; 22.11.2009

Если вы хотите вставить указанные элементы непосредственно в тело документа (а не внутри другого элемента, такого как «div»), попробуйте

document.body.appendChild( callSomePrototypesMethod() );

В IE есть примечание о 'document.body.appendChild'. См. http://danielsaidi.wordpress.com/tag/documentbodyappendchild/.

person Ademir Martins    schedule 21.12.2009