Вообразите:
<div id="old-parent">
<span>Foo</span>
<b>Bar</b>
Hello World
</div>
<div id="new-parent"></div>
Что JavaScript может быть записан для перемещения всех дочерних узлов (оба элемента и текстовые узлы) от old-parent
кому: new-parent
без jQuery?
Я не забочусь о пробеле между узлами, хотя я ожидаю ловить случайное Hello World
, они должны были бы быть перемещены как есть также.
Править
Чтобы быть ясным, я хочу закончить с:
<div id="old-parent"></div>
<div id="new-parent">
<span>Foo</span>
<b>Bar</b>
Hello World
</div>
Ответ вопроса, от которого это - предложенный дубликат, привел бы к:
<div id="new-parent">
<div id="old-parent">
<span>Foo</span>
<b>Bar</b>
Hello World
</div>
</div>
Современный путь:
newParent.append(...oldParent.childNodes);
.append
замена для .appendChild
. Основное различие - то, что это признает, что несколько узлов сразу и даже простых строк, как .append('hello!')
oldParent.childNodes
повторяемы , таким образом, это может быть распространено с ...
для становления несколькими параметрами .append()
Таблицы совместимости обоих (короче говоря: Край 17 +, Safari 10 +):
Если Вы не используете -
на названия идентификатора затем, можно сделать это
oldParent.id='xxx';
newParent.id='oldParent';
xxx.id='newParent';
oldParent.parentNode.insertBefore(oldParent,newParent);
#newParent { color: red }
<div id="oldParent">
<span>Foo</span>
<b>Bar</b>
Hello World
</div>
<div id="newParent"></div>