DOM(Document Object Model) : HTML 문서를 트리 구조로 표현한 객체 모델
- 웹 페이지의 요소를 실시간으로 제어할 수 있음.
- DOM은 HTML 문서를 노드(Node) 트리로 표현한 구조
- 각 요소는 객체처럼 접근 가능
- 자바스크립트로 DOM을 조작하면 실시간으로 웹 화면이 변경됨

예문 - querySelector를 이용하여 img 태그의 src 추가
let img = document.querySelector("img");
img.src = "new-image.jpg";
속성 조작
- .innerText, .innerHTML로 텍스트/HTML 변경
- .src, .href, .value 등 속성에 접근
- .setAttribute(), .getAttribute(), .removeAttribute()
예문 - innerText를 이용하여 greeting id의 text를 변경
<p id="greeting">안녕하세요</p>
<script>
let text = document.getElementById("greeting");
text.innerText = "Hello, JavaScript!";
</script>
이벤트 연결
- 요소에 이벤트를 연결하여 사용자 상호작용 처리
- 다양한 이벤트 종류: click, mouseover, change, keydown 등
- 여러 개의 이벤트를 연결할 땐 addEventListener() 사용
예문 - addEventListner를 이용해 버튼에 alert 기능 추가
let btn = document.getElementById("btn");
btn.addEventListener("click", () => {
alert("버튼 클릭됨!");
});
스타일 변경
- .style 속성으로 CSS 조작 가능
- .classList.add/remove/toggle()로 클래스 조작
예시 - classList를 이용하여 box 클래스에 .active 라는 클래스를 add(추가) 해주기
let box = document.getElementById("box");
box.style.backgroundColor = "skyblue";
box.classList.add("active");
요소 추가
- createElement() → 새 요소 생성
- appendChild() 또는 prepend() → 요소 삽입
예문 - createElemet로 li를 새로 만들고, li에 innerText로 새 항목을 추가해서, appendChild를 이용하여 새로 만든 li를 ul에 마지막 자식으로 추가.
let ul = document.querySelector("ul");
let li = document.createElement("li");
li.innerText = "새 항목";
ul.appendChild(li);
요소 삭제 및 이동
- removeChild(), parentNode, replaceChild() 등을 활용해 DOM 구조 변경
예시 - item을 querySelector로 li를 선택해서 지정하고, parentNode를 통해 부모 노드를 선택하고, item의 (li 요소) "첫번째" 자식을 remove 함.
let item = document.querySelector("li");
item.parentNode.removeChild(item); // 삭제
※ id로 선택한 게 아닌 li 태그를 선택한 경우, li의 맨 처음 요소가 선택됨.
요약

실습
See the Pen DOM Event Basic by Cheolho Jang (@chiro-J) on CodePen.
연습 문제 - 버튼 눌러서 인삿말 변경 & 텍스트를 입력 후 버튼을 눌러 리스트에 추가
See the Pen DOM Event exercise by Cheolho Jang (@chiro-J) on CodePen.
※ 모를만 한 것 체크
input.value : .value 속성으로 input에 입력된 값을 선택
연습 문제 - 키보드 방향키를 눌러 필드 위에서 상하좌우 이동하는 박스 만들기
※ 모를만 한 것 체크
변수.id = "-" : 변수에 "-"라는 id 속성을 추가.
event : 객체이며, 웹페이지 안에서 일어나는 모든 정보 (키보드 누르기, 마우스 클릭, 화면 터치 등등)
event.key : event 객체 안에 있는 key 속성, 키보드 입력 정보
function (event) / function (e) : 이벤트 핸들러, 이벤트가 발생했을 때 실행되는 함수.
keydown : 키가 눌릴 때 실행, keyup : 키가 눌렸다 올라올 때 실행.
offsetTop : 음수로 갈수록 위로, 양수로 갈수록 아래로
offsetLeft : 음수로 갈수록 왼쪽으로, 양수로 갈수록 오른쪽으로
※ function (e) 에 대한 설명은 아래 페이지 참고
https://velog.io/@ssarr_i/js-functione%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC
[JavaScript] function(e)에 대하여
JavaScript로 event를 받으면 function(e)와 같이 받았었는데 왜 꼭 e가 들어가는 것인지 의문이었다.addEventListener에서 function(e)가 쓰여져있는 위치에는 이벤트 핸들러가 주어져야 한다. 이벤트가 발생했
velog.io
'Front-End > JavaScript' 카테고리의 다른 글
| JavaScript #15 (BOM) (1) | 2025.06.30 |
|---|---|
| JavaScript #14 (form) (0) | 2025.06.30 |
| JavaScript #12 (배열) (0) | 2025.06.25 |
| JavaScript #11 (날짜/시간 객체 관련) (0) | 2025.06.25 |
| JavaScript #10 (객체) (0) | 2025.06.25 |