JavaScript 동적 DOM
이 예제는 JavaScript가 HTML 문서를 객체처럼 다루는 기본 흐름을 보여줍니다. 버튼 클릭으로 여러 요소를 찾아 스타일을 바꾸거나, 새 요소를 만들고 문서에 붙이는 과정이 핵심입니다.
DOM 트리에 동적으로 객체를 삽입할 수 있습니다.
HTML 문서는 태그 안에 태그가 들어가는 계층 구조입니다. 브라우저는 이 구조를 부모와 자식 관계를 가진 DOM 트리로 바꿔서 JavaScript가 접근할 수 있게 합니다.
JavaScript로 화면을 바꾸려면 먼저 바꿀 대상을 찾아야 합니다. getElementsByTagName()은 태그 이름으로, getElementsByClassName()은 class 이름으로 여러 요소를 찾습니다.
| 메서드 | 찾는 기준 | 반환 |
|---|---|---|
| getElementById | id 하나 | 요소 1개 |
| getElementsByTagName | 태그 이름 | 여러 요소 |
| getElementsByClassName | class 이름 | 여러 요소 |
| querySelectorAll | CSS 선택자 | 여러 요소 |
여러 요소를 찾으면 배열처럼 인덱스로 접근해 하나씩 처리합니다. 예제에서는 for 반복문으로 span 또는 class 요소를 돌면서 style 속성을 바꿉니다.
이 방식은 같은 class를 가진 여러 단어를 한 번에 강조할 때 유용합니다.
document.write()는 문서에 HTML 문자열을 직접 씁니다. 학습용으로는 DOM 출력 흐름을 이해하기 좋지만, 이미 로드된 문서에서 남용하면 기존 문서를 덮어쓸 수 있어 주의해야 합니다.
HTML 문서 작성기 예제는 window.open()으로 새 창을 열고, textarea에 입력한 HTML을 새 창의 document에 씁니다. document.open(), write(), close() 순서가 중요합니다.
createElement()는 새 요소를 만들고, appendChild()는 부모 요소 끝에 붙입니다. removeChild()는 부모를 기준으로 자식 요소를 제거합니다.
| 메서드 | 역할 | 예제 위치 |
|---|---|---|
| createElement | 새 태그 객체 생성 | div 만들기 |
| innerHTML | 요소 내부 HTML 설정 | 문구 넣기 |
| setAttribute | 속성 추가 | id 지정 |
| appendChild | 부모에 자식 삽입 | body에 div 추가 |
| removeChild | 부모에서 자식 제거 | 클릭한 div 삭제 |
예제에는 태그 속성에 직접 onclick, onmouseover를 쓰는 방식이 등장합니다. 학습 초기에는 이해하기 쉽지만, 코드가 커질수록 HTML과 JavaScript가 섞여 관리가 어려워집니다.
| 방식 | 장점 | 주의 |
|---|---|---|
| 인라인 이벤트 | 예제가 짧고 바로 보임 | HTML과 JS가 섞임 |
| 익명 함수 대입 | 생성한 요소에 바로 연결 가능 | 재사용이 어려울 수 있음 |
| addEventListener | 분리와 확장에 유리 | 초기 학습에는 문법이 조금 길다 |
| this 사용 | 이벤트가 발생한 요소를 가리킴 | 화살표 함수에서는 의미가 달라짐 |
| 실수 | 증상 | 해결 |
|---|---|---|
| 여러 요소 반환을 단일 요소처럼 사용 | style을 바로 바꾸려다 오류가 납니다. | 반복문으로 각 요소에 접근합니다. |
| class 이름 오타 | 버튼을 눌러도 아무 요소도 바뀌지 않습니다. | HTML class와 JavaScript 문자열을 비교합니다. |
| document.write를 로드 후 남용 | 기존 화면이 사라질 수 있습니다. | 동적 변경은 DOM 메서드를 우선 사용합니다. |
| removeChild를 자식 기준으로 호출 | 삭제가 실패합니다. | 부모 요소에서 자식 요소를 제거해야 합니다. |
| 새 창 document.close 누락 | 출력이 완료되지 않은 것처럼 보일 수 있습니다. | open, write, close 순서를 지킵니다. |
| 체크 | 통과 기준 |
|---|---|
| 요소 찾기 | id, tag, class 중 어떤 기준으로 찾는지 설명할 수 있습니다. |
| 반복 처리 | 여러 요소를 반복문으로 하나씩 바꿉니다. |
| 동적 생성 | createElement 후 appendChild로 문서에 붙입니다. |
| 동적 삭제 | 부모 요소를 기준으로 removeChild를 호출합니다. |
| 이벤트 | 버튼 클릭이나 마우스 동작이 어느 함수와 연결되는지 확인합니다. |
핵심 한 줄 요약
Tags
'php' 카테고리의 다른 글
| JavaScript 이벤트 객체·흐름 — 캡처·버블링 완전 정리 (0) | 2026.07.05 |
|---|---|
| JavaScript 이벤트 리스너 — 4가지 등록 방식 완전 정리 (0) | 2026.07.05 |
| JavaScript getElementsBy — ClassName·TagName·인라인 리스너 완전 정리 (0) | 2026.07.05 |
| JavaScript DOM 기초 — DOM 트리·write·writeln·window.open 완전 정리 (0) | 2026.07.05 |
| 웹 개발 시작하기 — 기본 HTML 문서 구조 완전 정리 (1) | 2026.07.04 |
왕진 블로그

댓글