상상해보십시오.
<div id="old-parent">
<span>Foo</span>
<b>Bar</b>
Hello World
</div>
<div id="new-parent"></div>
자바 스크립트에서 모든 자식 노드 (두 요소, 텍스트 노드)를 이동 기록 할 수있는 일 old-parent
에 new-parent
jQuery를하지 않고?
노드 사이의 공백은 신경 쓰지 않지만 stray를 잡을 것으로 예상하지만 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>
답변
기본적으로 이전 상위 노드의 각 직계 하위 항목을 반복하여 새 상위 노드로 이동하려고합니다. 직계 자손의 모든 자녀는 함께 움직입니다.
var newParent = document.getElementById('new-parent');
var oldParent = document.getElementById('old-parent');
while (oldParent.childNodes.length > 0) {
newParent.appendChild(oldParent.childNodes[0]);
}
답변
현대적인 방법 :
newParent.append(...oldParent.childNodes);
.append
는.appendChild
. 가장 큰 차이점은 한 번에 여러 노드를 허용하고 심지어는 다음과 같은 일반 문자열을 허용한다는 것입니다..append('hello!')
oldParent.childNodes
이고 반복 가능한 가에 확산 될 수 있도록...
여러 매개 변수가 될.append()
두 가지의 호환성 표 (요약 : Edge 17+, Safari 10+) :
답변
다음은 간단한 기능입니다.
function setParent(el, newParent)
{
newParent.appendChild(el);
}
el
의는 childNodes
있습니다 이동하는 요소는, newParent
은 IS 요소 el
로 이동합니다 당신이 좋아하는 기능을 수행 할 수 있도록 :
var l = document.getElementById('old-parent').childNodes.length;
var a = document.getElementById('old-parent');
var b = document.getElementById('new-parent');
for (var i = l; i >= 0; i--)
{
setParent(a.childNodes[0], b);
}
답변
이 답변은 내부 코드 (innerHTML)를 하나에서 다른 코드로 전송하는 것 외에 다른 작업을 수행 할 필요가없는 경우에만 실제로 작동합니다.
// Define old parent
var oldParent = document.getElementById('old-parent');
// Define new parent
var newParent = document.getElementById('new-parent');
// Basically takes the inner code of the old, and places it into the new one
newParent.innerHTML = oldParent.innerHTML;
// Delete / Clear the innerHTML / code of the old Parent
oldParent.innerHTML = '';
도움이 되었기를 바랍니다!
답변
-
아이디 이름에 사용 하지 않으면 이렇게 할 수 있습니다.
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>