์ด์ ๋๊ธฐ์ ๋น๋๊ธฐ์ ๋ํด ํ์ตํ๋ ๋ฐ ์ด์ด, ์ค๋์ ํจ๋น๋์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์๋ฅผ ํตํด DOM๊ณผ DOM API์ ๋ํด ๋ณต์ตํ๋ค.
DOM์ ์น ๊ฐ๋ฐ์์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ด๋ฉด์๋ ์ค์ํ ๊ฐ๋ ์ค ํ๋๋ก, HTML ๋ฌธ์๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์กฐ์ํ ์ ์๋๋ก ๊ตฌ์กฐํํ ํธ๋ฆฌ ํํ์ ๊ฐ์ฒด ๋ชจ๋ธ์ด๋ค.
์ด๋ฒ ๋ณต์ต์ ํตํด DOM ์์๋ฅผ ์ ํํ๊ณ ์กฐ์ํ๋ ๋ค์ํ ๋ฉ์๋๋ค, ๊ทธ๋ฆฌ๊ณ ์ด๋ฒคํธ๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฐฉ์ ๋ฑ
์ ๋ค์ ํ ๋ฒ ์ ๋ฆฌํ ์ ์์๋ค.

๐ฉ DOM๊ณผ DOM API
DOM์ด๋?
- DOM(Document Object Model)์ ์น ๋ธ๋ผ์ฐ์ ๊ฐ HTML ๋ฌธ์๋ฅผ ํด์ํด ๊ฐ์ฒด ํํ๋ก ํํํ ๊ตฌ์กฐ
- HTML์ ๊ฐ ํ๊ทธ๋ DOM ํธ๋ฆฌ์์ ๋ ธ๋(Node)๊ฐ ๋๋ฉฐ, ์๋ฐ์คํฌ๋ฆฝํธ๋ก ํด๋น ๋ ธ๋์ ์ ๊ทผํ๊ณ ์กฐ์ํ ์ ์์
Web์ด๋?
- ์ธํฐ๋ท ์์์ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ ์์คํ
- ์ ์ ๋ช ์นญ: World Wide Web (WWW)
๐ง๐ป ๊ฐ๋ฐ์ ์ ์ฅ์์ ์น์ด๋?
- ์น์ ์ฌ์ฉ์์ ์๋ฒ๋ฅผ ์ฐ๊ฒฐํ๋ ์ฐฝ๊ตฌ
- ๊ฐ๋ฐ์๋ ์ด ์น ์ฐฝ๊ตฌ๋ฅผ ํตํด ์ ๋ณด๋ฅผ ๋ณด์ฌ์ฃผ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ณ , ์ฌ์ฉ์์ ์ํต
์น์ ๊ตฌ์ฑ ์์
- HTML: ๋ฌธ์์ ๊ตฌ์กฐ (์: ์ ๋ชฉ, ๋ฌธ๋จ, ๋ฒํผ ๋ฑ)
- CSS: ๋ฌธ์์ ์คํ์ผ (์: ์์, ์์น, ํฌ๊ธฐ)
- JavaScript: ๋์ ์ธ ๊ธฐ๋ฅ (์: ํด๋ฆญ ์ ๋ฉ์์ง ์ถ๋ ฅ)
๐ DOM์ HTML๊ณผ JavaScript๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ ์ญํ ์ ํ๋ฉฐ, ์น ํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ์กฐ์ํ ์ ์๊ฒ ์ํฌํธ
DOM ํธ๋ฆฌ๋?
- DOM์ HTML ๋ฌธ์๋ฅผ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ํํ
- ๊ฐ ์์๋ ๋ถ๋ชจ-์์ ๊ด๊ณ๋ฅผ ๊ฐ์ง๋ฉฐ, ๋ฃจํธ๋ <html>
DOM API
- DOM ํธ๋ฆฌ๋ฅผ ์กฐ์ํ๊ธฐ ์ํ ๋ธ๋ผ์ฐ์ ๋ด์ฅ ์๋ฐ์คํฌ๋ฆฝํธ ํจ์(๋ฉ์๋)
- ์ด๋ฅผ ์ด์ฉํ๋ฉด HTML ์์์ ์ ๊ทผํ๊ณ , ์ถ๊ฐ/์ญ์ ํ๊ฑฐ๋ ์ด๋ฒคํธ ๋ฑ๋ก ๊ฐ๋ฅ
DOM ์์ ์ ํ ๊ด๋ จ ๋ฉ์๋
| ๋ฉ์๋ | ์ค๋ช |
| getElementById(id) | ํน์ ID๋ฅผ ๊ฐ์ง ์์๋ฅผ ๋ฐํ |
| getElementsByClassName(class) | ํด๋น ํด๋์ค ์ด๋ฆ์ ๊ฐ์ง ์์๋ค ๋ฐํ (HTMLCollection) |
| getElementsByTagName(tag) | ํด๋น ํ๊ทธ ์ด๋ฆ์ ๊ฐ์ง ์์๋ค ๋ฐํ (HTMLCollection) |
| querySelector(selector) | CSS ์ ํ์ ๋ฐฉ์์ผ๋ก ์ฒซ ๋ฒ์งธ ์์ ๋ฐํ |
| querySelectorAll(selector) | CSS ์ ํ์ ๋ฐฉ์์ผ๋ก ๋ชจ๋ ์์ (NodeList) ๋ฐํ |
document.getElementById('myId'); // ID๋ก ์์ ์ ํ
document.querySelector('.myClass'); // CSS ์ ํ์ ๋ฐฉ์ (์ฒซ ๋ฒ์งธ ์์)
document.querySelectorAll('.myClass'); // ์ฌ๋ฌ ์์ ์ ํ (NodeList)
document.getElementsByClassName('myClass'); // ํด๋์ค ์ด๋ฆ์ผ๋ก ์ ํ
document.getElementsByTagName('div'); // ํ๊ทธ ์ด๋ฆ์ผ๋ก ์ ํ
- โ querySelector์ querySelectorAll์ CSS ์ ํ์ ๋ฐฉ์์ด๋ผ ๋งค์ฐ ์ง๊ด์
DOM ์์ ์์ฑ ๋ฐ ์กฐ์ ๋ฉ์๋
| ๋ฉ์๋ | ์ค๋ช |
| createElement(tag) | ์ HTML ์์ ์์ฑ |
| createTextNode(text) | ํ ์คํธ ๋ ธ๋ ์์ฑ |
| appendChild(node) | ๋ถ๋ชจ ์์์ ์์ ์์ ์ถ๊ฐ |
| innerHTML | ์์ ๋ด๋ถ์ HTML ๋ด์ฉ์ ์ฝ๊ฑฐ๋ ๋ณ๊ฒฝ |
// ์์ ์์ฑ
const newDiv = document.createElement('div');
newDiv.textContent = '์๋ก์ด DIV์
๋๋ค';
// ์์ ์ถ๊ฐ
document.body.appendChild(newDiv);
// ์์ ๋ด์ฉ ์์
const heading = document.querySelector('h1');
heading.innerHTML = '๋ฐ๋ ์ ๋ชฉ์
๋๋ค';
DOM ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ฉ์๋
| ๋ฉ์๋ | ์ค๋ช |
| addEventListener(type, callback) | ํด๋ฆญ, ์ ๋ ฅ ๋ฑ์ ์ด๋ฒคํธ๋ฅผ ๊ฐ์งํ๊ณ ์ฝ๋ฐฑ ํจ์ ์คํ |
const button = document.querySelector('#btn');
button.addEventListener('click', () => {
alert('๋ฒํผ์ด ํด๋ฆญ๋์์ต๋๋ค!');
});
- ๐ก ์ด๋ฒคํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉ์์ ์ํธ์์ฉํ๋ ํต์ฌ (ํด๋ฆญ, ํค๋ณด๋ ์ ๋ ฅ ๋ฑ)
์ ๋ฆฌ
- DOM์ ๋ธ๋ผ์ฐ์ ๊ฐ HTML์ ํด์ํ ๊ฐ์ฒด ํธ๋ฆฌ ๊ตฌ์กฐ
- DOM API๋ฅผ ํตํด ์๋ฐ์คํฌ๋ฆฝํธ๋ก HTML ์์๋ฅผ ์ ํ, ์์ , ์์ฑ ๊ฐ๋ฅ
'๐ Programming Language > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ๐ [DeepDive][JS] 09์ฅ _ ํ์ ๋ณํ๊ณผ ๋จ์ถ ํ๊ฐ (0) | 2025.04.19 |
|---|---|
| ๐ [DeepDive][JS] ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฅ๋ค์ด๋ธ ๋ณต์ต (1) | 2025.04.19 |
| [JavaScript] - ๋น๋๊ธฐ์ API (1) | 2025.04.07 |
| Practicial JS) JavaScript์ ํ์ (0) | 2025.03.02 |
| Practicial JS) const & let (0) | 2025.03.01 |