일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- CSS
- date
- Java
- IntelliJ
- Files
- windows
- js
- Button
- input
- 문자열
- json
- 이클립스
- ArrayList
- 테이블
- 자바스크립트
- Array
- list
- Maven
- 자바
- html
- Visual Studio Code
- table
- CMD
- javascript
- string
- 배열
- vscode
- 인텔리제이
- 이탈리아
- Eclipse
- Today
- Total
어제 오늘 내일
[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를 이용하여
모든 자식노드를 삭제하는 방법을 알아보았습니다.
'IT > Javascript' 카테고리의 다른 글
[Javascript] 원단위 절사하기 (0) | 2023.06.26 |
---|---|
[Javascript] Object(객체) key 존재 여부 확인하기 (0) | 2023.03.07 |
[Javascript] 체크박스 초기화하기 (0) | 2022.07.21 |
[Javascript] 특정 문자 제거하기 - 모두 제거, 대소문자 구분 (replace) (0) | 2022.07.20 |
[Javascript] 노드 생성(텍스트), 추가, 변경, 삭제, 복사 총정리 (0) | 2022.06.26 |