[Javascript] 자식 노드 모두 삭제하기
Javascript를 사용하여
특정 노드의 모든 자식 노드를 삭제하는 방법입니다.
- innerHTML, textContent
- replaceChildren()
- removeChild(), remove()
1. innerHTML, textContent
innerHTML
<div id='parent'>
<div>자식노드1</div>
<div>자식노드2</div>
</div>
<input type='button' value='자식노드 삭제' onclick='remove_children()' />
function remove_children() {
// 부모 노드 선택
const parent = document.getElementById('parent');
// 자식 노드 삭제
parent.innerHTML = "";
}
parent.innerHTML = '';
innerHTML 속성을 이용하면
element 안에 포함된 HTML 또는 XML을 읽어오거나 설정할 수 있습니다.
여기서는,
parent 노드 안의 HTML을 ''(공백)으로 설정하여
기존의 자식 노드를 삭제하였습니다.
하지만, 이 방법은 성능에 불리합니다.
innerHTML은 텍스트 HTML을 파싱하기 위해 파서를 호출하기 때문입니다.
(비록, 우리의 코드는 빈 공백을 입력하고 있지만...)
그래서, 성능면에서 innerHTML 보다는 textContent가 더 낫습니다.
textContent
<div id='parent'>
<div>자식노드1</div>
<div>자식노드2</div>
</div>
<input type='button' value='자식노드 삭제' onclick='remove_children()' />
function remove_children() {
// 부모 노드 선택
const parent = document.getElementById('parent');
// 자식 노드 삭제
parent.textContent = "";
}
parent.textContent = '';
textContent 속성은,
노드와 자식 노드의 text 컨텐츠를 표현합니다.
여기서는 parent 노드의 text 컨텐츠를 빈 공백으로 세팅하여,
기존에 가지고 있던 자식 노드를 모두 삭제하였습니다.
2. replaceChildren()
replaceChildren()
<div id='parent'>
<div>자식노드1</div>
<div>자식노드2</div>
</div>
<input type='button' value='자식노드 삭제' onclick='remove_children()' />
function remove_children() {
// 부모 노드 선택
const parent = document.getElementById('parent');
// 자식 노드 삭제
parent.replaceChildren();
}
parent.replaceChildren();
replaceChildren() 함수는, 이름에서도 알 수 있듯이
자식 노드를 파라미터로 입력받은 파라미터의 노드로 교체해주는 함수입니다.
그런데, 위 예제와 같이 파라미터로 아무것도 전달되지 않으면,
모든 자식 노드가 삭제됩니다.
3. removeChild(), remove()
removeChild()
<div id='parent'>
<div>자식노드1</div>
<div>자식노드2</div>
</div>
<input type='button' value='자식노드 삭제' onclick='remove_children()' />
function remove_children() {
// 부모 노드 선택
const parent = document.getElementById('parent');
// 자식 노드 삭제
while(parent.firstChild) {
parent.removeChild(parent.firstChild);
}
}
while(parent.firstChild) {
parent.removeChild(parent.firstChild);
}
removeChild() 함수는,
파라미터로 전달받은 자식 노드를 삭제합니다.
이때, 파라미터로 전달받은 노드는 parent의 자식 노드여야 합니다.
여기서는
firstChild 노드가 삭제될때까지
반복문을 수행하여 자식 노드를 삭제합니다.
remove()
<div id='parent'>
<div>자식노드1</div>
<div>자식노드2</div>
</div>
<input type='button' value='자식노드 삭제' onclick='remove_children()' />
function remove_children() {
// 부모 노드 선택
const parent = document.getElementById('parent');
// 자식 노드 삭제
while(parent.firstChild) {
parent.firstChild.remove()
}
}
while(parent.firstChild) {
parent.firstChild.remove();
}
removeChild() 예제와 마찬가지로,
firstChild 노드가 삭제될 때까지 반복문을 수행하여 노드를 삭제합니다.
여기서는 remove() 함수를 사용하였습니다.
remove() 함수는 선택한 노드를 삭제합니다.
Javascript를 이용하여
모든 자식노드를 삭제하는 방법을 알아보았습니다.