notes
39장. DOM
모던 JS Deep Dive — DOM 트리·노드 조작과 브라우저 API 핵심 정리.
참고: 이웅모 《모던 자바스크립트 Deep Dive》 39장 · [MDN DOM](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model)
DOM은 HTML의 객체 트리. 쿼리·생성·삽입·속성·트래버설이 핵심.
const el = document.querySelector('#app');
const li = document.createElement('li');
li.textContent = 'item';
el.append(li);
console.log(el.children, el.parentElement);
노드 타입
Document, Element, Text, Comment… nodeType.
선택
getElementById, querySelector(All), getElementsBy* (live vs static).
조작
createElement, append/prepend/remove, innerHTML(XSS 주의) vs textContent.
속성
getAttribute/setAttribute, 프로퍼티 el.value, dataset, classList.
트래버설
parent/children/siblings. closest.
함정
- innerHTML XSS
- live HTMLCollection 함정
- 리플로우 유발 반복 삽입 → DocumentFragment
const frag = document.createDocumentFragment();
for (const t of texts) {
const li = document.createElement('li');
li.textContent = t;
frag.append(li);
}
list.append(frag);
실무
- 텍스트는 textContent
- 배치는 fragment
- 선택 캐시
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.