- 어떤 요소의 내부 비우기 -
html에서 어떤 요소를 나중에 채워야 할 때가 있다.
예를 들어서 서버에서 어떤 데이터를 불러와서,
그때그때 화면에 뿌려줘야 할 때도 그렇다.
특히 tbody 나 div 태그 등에서 자주 쓴다.
내부를 비우거나 새로운 요소로 채우거나 한다.
댓글을 지우거나, 버튼을 추가하는 등
어떤 동작이 일어날 때마다
특정 요소 안을 비우고 다시 채워야 할 때가 있다.
- jQuery 로 비우기 -
이럴 때 어떤 태그의 내부를 어떻게 비울 수 있을까?
jQuery라면 간단하다.
아래 함수를 사용하면 내부 요소들을 지워준다.
$('selector').empty();
- Vanilla js 로 비우기 -
JavaScript 만으로 지울 수 없을까?
한 번에 지우는 함수는 따로 없는 것 같다.
대신 반복문을 돌려야 한다.
안을 비우고 싶은 요소에 접근한 뒤에,
그 요소 안에 하위 요소가 있는지 확인하다.
만약에 하위 요소가 있다면, 그 하위 요소를 지운다.
이 과정을 반복한다.
예를 들어서 tbody 태그 안을 비운다면 아래와 같다.
const tb= document.querySelector('tbody#cartListBody');
while (tb.firstChild) {
tb.removeChild(tb.firstChild);
}
- 코드 작동 과정 설명 -
tb는 tbody 태그이고, 이 요소 안을 비우려고 한다.
여기서 tb.firstChild 라는 속성에 접근하는 부분이 보인다.
firstChild 속성은 무엇일까?
크롬 익스플로러에서 개발자 모드(F12)를 사용하면 간단히 확인할 수 있다.

childeNodes 속성에는 NodeList 형태로 하위 요소들이 저장돼 있고,
children 속성에는 HTMLCollection 형태로 하위 요소들을 저장해 두었다.
이렇게 하위 요소들 중에 가장 첫 번째 요소가 firstChild 속성값에 들어 있다.

firstChild 속성 안에 어떤 값이 있다면
tbody 는 하위 요소를 적어도 하나 이상 들고 있는 것이고,
firstChild 가 없다면 tbody는 비어 있는 상태임을 추론할 수 있다.
이러한 사실을 이용하며 while문 안에 조건식을 아래와 같이 둔다.
while (tb.firstChild)
하위 요소가 하나라도 있다면 조건식은 true가 될 것이고,
하위 요소가 하나도 남지 않아서 조건식이 false가 될 때까지
while문을 반복할 것이다.
예시를 하나 더 보자.
아래는 select 요소 안에 있는 option 요소들을 모두 비우는 기능이다.
const sel = document.querySelector('select#sizeCategory');
while (sel.firstChild) {
sel.removeChild(sel.firstChild);
}
-220404
'JavaScript' 카테고리의 다른 글
| 자바스크립트로 태그에 class 클래스 추가하기 (jQuery + Vanilla js) (0) | 2022.04.12 |
|---|---|
| 자바스크립트 queryselector 사용법 : 꼭 document가 아니어도 가능 (0) | 2022.04.12 |
| 체크박스 값 확인 및 가져오기 (checkbox value checked) (0) | 2022.04.12 |
| JavaScript 이벤트 여러 개 걸어 두기 (vanilla js 또는 jQuery 로 event 2개 이상 걸기) (0) | 2022.04.12 |
| JavaScript에서 배열이면서 객체인 자료형? 배열 값 가져오기 여러 방법 (0) | 2022.04.12 |