2025. 9. 22. 23:03ใFront-end/JavaScript

๋ชฉ์ฐจ
1. DOM ๋
ธ๋ ํด๋์ค
2. DOM ๋ ธ๋๋ฅผ ์กฐ์ํ ๋ ์ฌ์ฉํ๋ ์ฃผ์ ํ๋กํผํฐ
1. DOM ๋ ธ๋ ํด๋์ค
DOM ๋ ธ๋๋ ์ข ๋ฅ์ ๋ฐ๋ผ ๊ฐ๊ฐ ๋ค๋ฅธ ํ๋กํผํฐ๋ฅผ ์ง์ํ๋ค.
์๋ฅผ ๋ค์ด ํ๊ทธ <a>์ ๋์ํ๋ ์์ ๋ ธ๋๋ ๋งํฌ์ ๊ด๋ จ๋ ํ๋กํผํฐ๋ฅผ,
<input>์ ๋์ํ๋ ์์ ๋ ธ๋๋ ์ ๋ ฅ ๊ด๋ จ ํ๋กํผํฐ๋ฅผ ์ ๊ณตํ๋ค.
๋ํ DOM ๋ ธ๋๋ ์ข ๋ฅ์ ๋ฐ๋ผ ๋์ํ๋ ๋ด์ฅ ํด๋์ค๊ฐ ๋ค๋ฅด๋ค.

๋ชจ๋ ๋ ธ๋๋ค์ ๊ณตํต์ ์ผ๋ก ์์ ๊ฐ์ ์์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ฏ๋ก, ํด๋์ค ์ญ์ ์์ํ๋ค.
๊ฐ ํด๋์ค์ ํน์ง์ ์๋์ ๊ฐ๋ค.
- EventTarget : ๋ฃจํธ์ ์๋ ์ถ์ ํด๋์ค๋ก, ๋์ ํ๋ ๊ฐ์ฒด๊ฐ ์ค์ ๋ก ๋ง๋ค์ด์ง์ง ์์
- Node : DOM ๋ ธ๋์ ๋ฒ ์ด์ค ์ญํ ์ ํ๋ ์ถ์ ํด๋์ค๋ก ์ฃผ์ ํธ๋ฆฌ ํ์ ๊ธฐ๋ฅ์ ์ ๊ณต
- Element : DOM ์์๋ฅผ ์ํ ๋ฒ ์ด์ค ํด๋์ค๋ก, getElementsByTagName ๋ฑ๊ณผ ๊ฐ์ด ์์ ์ ์ฉ ํ์์ ๋๋
ํ๋กํผํฐ/๋ฉ์๋๊ฐ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ค. - HTMLElement : HTML ์์ ๋
ธ๋์ ๋ฒ ์ด์ค ์ญํ ์ ํ๋ ํด๋์ค๋ก, ์๋์ ํด๋์ค๋ค์ด ์ด ํด๋์ค๋ฅผ ์์๋ฐ๋๋ค.
- HTMLInputElement - <input>
- HTMLBodyElement - <body>
HTMLAnchorElement - <a>
์์ ๊ด๊ณ ์์๋ฅผ ๋ค๋ฉด,
document.body๋ HTMLBodyElement ํด๋์ค์ ์ธ์คํด์ค์ด๋ฉฐ,
HTMLElement → Element → Node → EventTarget ์์ผ๋ก ์์๋๋ค.
2. DOM ๋ ธ๋๋ฅผ ์กฐ์ํ ๋ ์ฌ์ฉํ๋ ์ฃผ์ ํ๋กํผํฐ
DOM ๋ ธ๋๋ฅผ ์กฐ์ํ ๋ ์์ฃผ ์ฌ์ฉ๋๋ ํ๋กํผํฐ๋ค์ด ์๋ค
| ํ๋กํผํฐ | ์ญํ | ํน์ง / ์์ |
| nodeType | ๋ ธ๋ ํ์ ํ์ธ | ⋅ ์ ์๊ฐ ๋ฐํ (์์: 1, ํ
์คํธ: 3, ๋ฌธ์: 9 ...) ⋅ ์ฝ๊ธฐ ์ ์ฉ ⋅ let a = document.body; alert(a.nodeType); // 1 |
| nodeName / tagName |
ํ๊ทธ ์ด๋ฆ ํ์ธ | ⋅ tagName์ ์์ ๋
ธ๋๋ง ์กด์ฌ ⋅ nodeName์ ๋ชจ๋ ๋ ธ๋์ ์กด์ฌ ⋅ alert(document.body.nodeName); // BODY alert(document.body.tagName); // BODY |
| innerHTML | ์์ ๋ด์ HTML์ ๋ฌธ์์ด๋ก ์ฝ๊ฑฐ๋, HTML ์ฝ๋๋ก ์ค์ ํ์ฌ ์์ ๋ด๋ถ ๋ด์ฉ ์์ ๊ฐ๋ฅ |
⋅ '+='๋ฅผ ์ฌ์ฉํ๋ฉด ์์์ HTML์ ๋ฎ์ด ์ธ ์ ์์ ⋅ document.body.innerHTML = "์๋ก์ด BODY ๋ด์ฉ"; ⋅ chatDiv.innerHTML += "<div>์๋ ํ์ธ์ฉ</div> |
| outerHTML | ์์ ์์ ์ ํ๊ทธ + ๋ด๋ถ HTML ์ ์ฒด๋ฅผ ํฌํจํ HTML ๋ฌธ์์ด ์์ ์ ์ฒด ๊ต์ฒด ๊ฐ๋ฅ |
⋅ ๋ฌธ์ ๋ด ์์๋ ๋ฐ๋๋, ์ฐธ์กฐํ ๊ฐ์ฒด(element)๋ ๋์ผํ์ง ์์ ⋅ ํ ๋นํ HTML ์กฐ๊ฐ์ ์๋ก ์์ฑ๋๋ฉฐ, ๊ธฐ์กด ๊ฐ์ฒด๊ฐ ์ฌ์ ํ ๋จ์์์ ⋅ <div id="elem">... alert(elem.outerHTML); // <div id="elem">... |
| nodeValue / data |
์์๊ฐ ์๋ ๋
ธ๋ (ํ
์คํธ, ์ฃผ์ ๋
ธ๋)์ ๋ด์ฉ์ ์ฝ๊ณ ์์ ํ ๋ ์ฌ์ฉ |
⋅ data๊ฐ ์กฐ๊ธ๋ ๊ฐ๊ฒฐ ⋅ let text = document.body.firstChild; alert(text.data); // body์ ์ฒซ๋ฒ์งธ ์์ |
| textContent | ์์ ๋ด๋ถ์ '์์ ํ ์คํธ'๋ง ์ฝ๊ฑฐ๋ ์ | ⋅ ์ฌ์ฉ์ ์
๋ ฅ๊ฐ์ HTML ๋ณด์ ์ธก๋ฉด์์ textContent๊ฐ ์์ ํจ ⋅ <div id="news"><p>ใ ใ <p/><span>์ธ๊ณ์ธ</span> alert(news.textContent); // ใ ใ ์ธ๊ณ์ธ |
| hidden | ์์ ๋ณด์ด๊ธฐ/์จ๊ธฐ๊ธฐ ์ค์ hidden = true๋ display: none๊ณผ ์ ์ฌ |
⋅ CSS ์คํ์ผ display: none๊ณผ ์ฌ์ค์ ๊ฐ์ ๋์ ⋅ ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ์ ๊ฐ์์ฑ์ ์ํฅ์ ์ค ⋅ setInterval(()=> elem.hidden = !elem.hidden, 1000); // ๊น๋ฐ๊น๋ฐ |
์ฐธ๊ณ
'Front-end > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ๋ธ๋ผ์ฐ์ ์ฐฝ ์ฌ์ด์ฆ์ ์คํฌ๋กค ์ ๋ณด ์ป๊ธฐ (1) | 2025.09.22 |
|---|---|
| ๋ฉ์๋๋ก DOM ์กฐ์ํด์ ๋ฌธ์ ์์ ํ๊ธฐ (0) | 2025.09.22 |
| E2 : ์์ ๊ฒ์ํ๊ธฐ (0) | 2025.09.08 |
| E1 : JS๋ก DOM ๊ฐ์ฒด ํ์ํ๊ธฐ (0) | 2025.09.07 |
| B23 : iterable ๊ฐ์ฒด (1) | 2025.08.29 |
GitHub