728x90
๐น DOM์ด๋?
DOM (Document Object Model) ์ ๋ฌธ์(Document) ๋ฅผ ๊ฐ์ฒด(Object) ๋ก ํํํ๋ ๋ชจ๋ธ(Model) ์ด๋ค.
- ๋ฌธ์ ๊ฐ์ฒด: <html>, <body> ๊ฐ์ HTML ํ๊ทธ๋ฅผ JavaScript๊ฐ ์กฐ์ํ ์ ์๋๋ก ๊ฐ์ฒด๋ก ๋ณํํ ๊ฒ.
- ๋ชจ๋ธ: ๋ฌธ์ ๊ฐ์ฒด๋ฅผ ํธ๋ฆฌ(Tree) ๊ตฌ์กฐ๋ก ํํํ์ฌ ๋ธ๋ผ์ฐ์ ๊ฐ HTML์ ์ดํดํ๋ ๋ฐฉ์.
๐น DOM์ ์ญํ
์น ๋ธ๋ผ์ฐ์ ๋ HTML ๋ฌธ์๋ฅผ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๋ณํํ์ฌ ์ดํดํ๊ณ , JavaScript๋ ์ด๋ฅผ ํ์ฉํด ๊ฒ์, ์์ , ์ถ๊ฐ, ์ญ์ ๋ฑ์ ์์ ์ ์ํํ ์ ์๋ค.
๐น Tree ๊ตฌ์กฐ๋?
- Root Node: ์ต์์ ๋ ธ๋๋ก, DOM์์๋ <html>์ด ํด๋น๋๋ค.
- Parent & Child: ์์ ๋ ธ๋๋ฅผ ๋ถ๋ชจ(Parent), ํ์ ๋ ธ๋๋ฅผ ์์(Child)์ด๋ผ ํ๋ค.
- Leaf Node: ๋ ์ด์ ์์์ด ์๋ ๋ ธ๋๋ฅผ ๋ปํ๋ฉฐ, DOM์์๋ ํ ์คํธ ๋ ธ๋ ๊ฐ์ ์์๊ฐ ํด๋น๋๋ค.
๐น HTML์ด DOM ํธ๋ฆฌ๋ก ๋ณํ๋๋ ๊ณผ์
- ๋ธ๋ผ์ฐ์ ๊ฐ HTML์ ์ฝ๊ณ ๋ถ์(Parsing) ํ๋ค.
- HTML ์์๋ค์ ๊ณ์ธต์ ์ธ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๋ณํํ๋ค.
- JavaScript๊ฐ ์ด ํธ๋ฆฌ๋ฅผ ์ด์ฉํด ๋์ ์ผ๋ก ์กฐ์ํ ์ ์๋ค.
โ ์์ : HTML ์ฝ๋
<!DOCTYPE html>
<html>
<head>
<title>DOM Example</title>
</head>
<body>
<h1 id="title">Hello, DOM!</h1>
</body>
</html>
โ DOM ํธ๋ฆฌ ๊ตฌ์กฐ
Document
โโโ <html>
โ โโโ <head>
โ โ โโโ <title>DOM Example</title>
โ โโโ <body>
โ โโโ <h1 id="title">Hello, DOM!</h1>
๐น JavaScript๋ก DOM ์กฐ์ํ๊ธฐ
๐ ์์ ์ฐพ๊ธฐ ๋ฐ ๋ณ๊ฒฝ
document.getElementById("title").textContent = "Hello, JavaScript!";
๐ ์๋ก์ด ์์ ์ถ๊ฐ
let newPara = document.createElement("p"); newPara.textContent = "์๋ก์ด ๋ฌธ๋จ์ด ์ถ๊ฐ๋์์ต๋๋ค!"; document.body.appendChild(newPara);
'FrontEnd' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] Vite ๋ฅผ ์ฌ์ฉํ์ฌ React ์ค์น ๋ฐ ๊ธฐ๋ณธ์ค์ (0) | 2025.04.26 |
---|---|
[FrontEnd] jQuery ํ์ดํ ํจ์(=>)์ this (0) | 2025.04.10 |
[JS] querySelector vs getElement (0) | 2025.04.07 |
[JS] Bubbling, Capturing, Event Propagation, ์ด๋ฒคํธ ์ ํ (0) | 2025.04.01 |
[JS] ๋น๋๊ธฐ๋ก ๋ฐ์ดํฐ ์ฒ๋ฆฌ(async/await, fetch then) (0) | 2025.04.01 |