Как переместить всех детей элемента HTML в другого родителя с помощью JavaScript?

Вообразите:

<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>
62
задан 3 January 2014 в 22:26

2 ответа

Современный путь:

newParent.append(...oldParent.childNodes);
  1. .append замена для .appendChild. Основное различие - то, что это признает, что несколько узлов сразу и даже простых строк, как .append('hello!')
  2. oldParent.childNodes повторяемы , таким образом, это может быть распространено с ... для становления несколькими параметрами .append()

Таблицы совместимости обоих (короче говоря: Край 17 +, Safari 10 +):

3
ответ дан 31 October 2019 в 14:08

Если Вы не используете - на названия идентификатора затем, можно сделать это

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>
-1
ответ дан 31 October 2019 в 14:08

Другие вопросы по тегам:

Похожие вопросы: