๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ(DOM)
์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๊ณต๋ถํ๋ค ๋ณด๋ฉด DOM์ด๋ ๋ง์ ์์ฃผ ๋ง๋ ๊ฒ์ด๋ค.
DOM์ ๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ(document object model)์ ์ค์๋ง์ด๋ค.
๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ์ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก๊ทธ๋๋ฐ์์ ๋งค์ฐ ์ค์ํ ๊ฐ๋ ์ด๋ ์ ์ดํดํ๊ณ ๋์ด๊ฐ์ผ ํ๋ค.
๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ์ด๋
์ฐ๋ฆฌ๋ ์น ๋ฌธ์์ ๋ชจ๋ ์์๋ฅผ ๋ฐ๋ก ์ ์ดํ ์ ์์ด์ผ ํ๋ค.
์๋ฅผ ๋ค์ด ์น ๋ฌธ์์ ํ ์คํธ์ ์ด๋ฏธ์ง๊ฐ ๋ค์ด ์๋ค๋ฉด ์น ๋ธ๋ผ์ฐ์ ๋ ๋งํฌ์ ์ ๋ณด๋ฅผ ๋ณด๋ฉด์ ํ ์คํธ ๋จ๋ฝ์ด ๋ช ๊ฐ์ด๊ณ ๊ทธ ๋ด์ฉ์ด ๋ญ์์ธ์ง ์ดํด๋ณธ๋ค.
๋ํ ์ด๋ฏธ์ง๊ฐ ๋ช ๊ฐ์ด๊ณ ์ด๋ฏธ์ง ํ์ผ ๊ฒฝ๋ก๋ ์ด๋ ํ์ง ๋์ฒด ํ ์คํธ๋ ๋ฌด์์ธ์ง๋ ํ์ ํด์ ์ด๋ฏธ์ง๋ณ๋ก ์ ๋ฆฌํด์ ์ธ์ํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ํ ์คํธ์ ์ด๋ฏธ์ง ์์๋ฅผ ๋ธ๋ผ์ฐ์ ๊ฐ ์ ์ดํ๋ ค๋ฉด ๋ ์์๋ฅผ ๋ฐ๋ก ๊ตฌ๋ณํ์ฌ ์ธ์ํด์ผ ํ๋ค.
์ด๋ณด๋ค ๋ ๋ง์ ์์๋ฅผ ์ฌ์ฉํ ์น ๋ฌธ์๋ผ๋ฉด ์์ ์ฌ์ด์ ํฌํจ ๊ด๊ณ๋ ์์์ผ ํ๋ค.
์ด๋ฌํ ๋ชจ๋ ์ ๋ณด ์์๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๊ฐ์ ธ์ ํ๋ก๊ทธ๋๋ฐํ ๋ ์ฌ์ฉํ๋ค.
์ด๋ ์์์ผ ํ ๊ฐ๋ ์ด ์๋๋ฐ ๋ฐ๋ก DOM์ด๋ค.
๋ค์์ ๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ์ ์ ์ํ ๊ฒ์ด๋ค
๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ์ ์ ์
์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ์ฌ ์น ๋ฌธ์์ ์ ๊ทผํ๊ณ ์ ์ดํ ์ ์๋๋ก ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด ์น ๋ฌธ์๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ์ ๋ฆฌํ๋ ๋ฐฉ๋ฒ
HTML ์ธ์ด๋ก ์์ฑํ ์น ๋ฌธ์์ DOM์ HTML DOM์ด๋ผ๊ณ ํ๋ฉฐ, XML ๋ฌธ์์์ ์ฌ์ฉํ๋ XML DOM๋ ์๋ค.
์ฌ๊ธฐ์๋ HTML DOM์ ๊ธฐ์ค์ผ๋ก ์ค๋ช ํ๋ค.
DOM์ ์น ๋ฌธ์๋ฅผ ํ๋์ ๊ฐ์ฒด๋ก ์ ์ํ๋ค.
๊ทธ๋ฆฌ๊ณ ์น ๋ฌธ์๋ฅผ ์ด๋ฃจ๋ ํ ์คํธ๋ ์ด๋ฏธ์ง, ํ ๋ฑ์ ๋ชจ๋ ์์๋ ๊ฐ๊ฐ ๊ฐ์ฒด๋ก ์ ์ํ๋ค.
์๋ฅผ ๋ค์ด ์น ๋ฌธ์ ์ ์ฒด๋ document ๊ฐ์ฒด์ด๊ณ , ์ฝ์ ํ ์ด๋ฏธ์ง๋ image ๊ฐ์ฒด์ด๋ค.
์ด์ฒ๋ผ DOM์ ์น ๋ฌธ์์ ๊ทธ ์์ ๋ชจ๋ ์์๋ฅผ '๊ฐ์ฒด'๋ก ์ธ์ํ๊ณ ์ฒ๋ฆฌํ๋ค.
์์์ ๋ฐฐ์ ๋ ๋ธ๋ผ์ฐ์ ๊ฐ์ฒด์ ๋ง์ฐฌ๊ฐ์ง๋ก ์น ๋ฌธ์ ๊ฐ์ฒด๋ ๋ค์ํ ํ๋กํผํฐ์ ๋ฉ์๋๊ฐ ์๋ค.
์ฐ์ ๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ์ ๊ตฌ์กธ๋ฅด ๋ํ๋ด๋ DOM ํธ๋ฆฌ๋ฅผ ์์๋ณด๊ฒ ๋ค.
DOM ํธ๋ฆฌ
์๋ฐ์คํฌ๋ฆฝํธ๋ก DOM์ ์กฐ์ํ๋ ค๋ฉด ์ค์ ์น ๋ฌธ์๊ฐ DOM์ผ๋ก ์ด๋ป๊ฒ ํํ๋๋์ง ์์์ผ ํ๋ค.
DOM์ ์น ๋ฌธ์์ ์์๋ฅผ ๋ถ๋ชจ ์์์ ์์ ์์๋ก ๊ตฌ๋ถํ๋ค.
์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ๊ฐ๋จํ ์์ค๋ฅผ ์๊ฐํด ๋ณด์.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Do it!</h1>
<img src="images/EiffleTower.jpg" alt="Eiffle Tower">
</body>
</html>
๋ค์ ๊ทธ๋ฆผ์ ์ ์ฝ๋์ ๋ถ๋ชจ์์ ๊ด๊ณ๋ฅผ ์ ๋ฆฌํ ๊ฒ์ด๋ค.
DOM์ ๊ด์ ์ ์ฌ๊ธฐ์ ํ ๋จ๊ณ ๋ ๋ฐ์ ํ๋๋ฐ, DOM ์ ๋ฌธ์ ์์ ์์๋ฟ๋ง ์๋๋ผ ๊ฐ ์์์์ ์ฌ์ฉํ ๋ด์ฉ๊ณผ ์์ฑ๋ ์์์ผ๋ก ๋ํ๋ธ๋ค.
์ด๋ ๊ฒ ๋ถ๋ชจ์ ์์ ๊ตฌ์กฐ๋ก ํ์ํ๋ฉด ๋ง์น ๋๋ฌด ํํ๊ฐ ๋๋ฏ๋ก DOM ํธ๋ฆฌ๋ผ๊ณ ํ๋ค.
DOM ํธ๋ฆฌ์์ ๊ฐ์ง๊ฐ ๊ฐ๋ผ์ ธ ๋๊ฐ ํญ๋ชฉ์ node๋ผ๊ณ ํ๋ฉฐ, DOM ํธ๋ฆฌ์ ์์ ๋ถ๋ถ์ธ html ๋ ธ๋๋ฅผ root node๋ผ๊ณ ํ๋ค.
DOM์ ๊ตฌ์ฑํ๋ ๊ธฐ๋ณธ ์์น์ ๋ค์๊ณผ ๊ฐ๋ค.
1. ๋ชจ๋ HTML ํ๊ทธ๋ ์์(element) ๋ ธ๋์ด๋ค.
2. HTML ํ๊ทธ์์ ์ฌ์ฉํ๋ ํ ์คํธ ๋ด์ฉ์ ์์ ๋ ธ๋์ธ ํ ์คํธ ๋ ธ๋์ด๋ค.
3. HTML ํ๊ทธ์ ์๋ ์์ฑ์ ์์ ๋ ธ๋์ธ ์์ฑ(attribute) ๋ ธ๋์ด๋ค.
4. ์ฃผ์์ ์ฃผ์(comment) ๋ ธ๋์ด๋ค.