DOM
1. DOM์ด๋?
The Document Object Model(๋ฌธ์๊ฐ์ฒด๋ชจ๋ธ) ์ ์ฝ์๋ก, html, xml์ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค๋ฅผ ๋งํ๋ค.
๋ฌธ์ ๊ฐ์ฒด๋? html, xml์ Java Script๊ฐ ์ธ์ / ์ฌ์ฉ ํ ์ ์๋ ๊ฐ์ฒด๋ก ๋ง๋ ๊ฒ.
์ฝ๊ฒ ๋งํด ์น ๋ธ๋ผ์ฐ์ ๊ฐ html์ ์ธ์ํ๋ ๋ฐฉ์
DOM์ tree๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ์๊ณ , ์ด๊ฒ์ DOM Tree ๋ผ๊ณ ํ๋ค.
์ฆ, ๋ธ๋ผ์ฐ์ ๊ฐ html์ ๋ฌธ์ ๋ฅผ ์ธ์ / ์ด์ฉํ ์ ์๋๋ก Tree ๊ตฌ์กฐ์ ์๋ฃํ์ผ๋ก ๋ง๋ ๊ฒ์ DOM์ด๋ผ ํ๋ค.
๊ฐ๋จํ html์ ํตํ์ฌ ์์๋ฅผ ๋ค์ด๋ณด์.
<html>
<head>
<meta charset = "UTF-8"/>
<title/>
<head/>
<body>
<div>
<h1>~~~<h1/>
<p>xxx<p/>
<div/>
<div>
<ul>
<li>1. ~~<li/>
<li>2. xx<li/>
<ul/>
<div/>
<body/>
<html/>
์ ์์ฑ๋ ์ฝ๋์ html ๊ตฌ์กฐ๋๋ก ๋ธ๋ผ์ฐ์ ๋ DOM Tree๋ฅผ ์์ฑํ๋ค.
์ด๋ ๊ฒ Treeํํ๋ก ๋ง๋ค์ด ๋ธ๋ผ์ฐ์ ๊ฐ ์ธ์ / ์ด์ฉํ ์ ์๋๋ก ๋ง๋๋ ๊ฒ์ด๋ค.
์ ํธ๋ฆฌ๊ตฌ์กฐ์์ ๊ฐ๊ฐ์ ์์๋ฅผ node๋ผ ํ๋ค.
2. DOM์ ์ฌ์ฉํ๋ ์ด์
html์ ์ ์ ์ธ ์ปจํ ์ธ ์ด๋ค.
๋ง ๊ทธ๋๋ก html์ ์ ์ ์ธ ์ปจํ ์ธ ์ด๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์์์ ์ธํฐ๋์ ์ด ๋ถ๊ฐ๋ฅํ๋ค.
๋ฐ๋ผ์, Java Script๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์์ ์ธํฐ๋์ ์ด ๊ฐ๋ฅํ๊ฒ ํด์ผ ํ๋๋ฐ, ์ด ์ญํ ์ DOM์ด ๋ด๋นํ๋ค.
JJava Script์ Event => DOM์ ํด๋น Event ๋ฐ์ => ๋ธ๋ผ์ฐ์ ๋ฆฌ๋ ๋๋ง
์์ฝํ์๋ฉด, ์ฌ์ฉ์์๊ฒ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ ์ญํ ์ ํ๋ค.
3. ์ ์์
DOM !== html
html๋ฌธ์์ ์ํด DOM์ด ์์ฑ๋์ง๋ง, html๊ณผ DOM์ ์์ ํ ๊ฐ์ง ์๊ณ , ์ด๊ฒ์ ๋ํ 2๊ฐ์ง ๋ํ ์ผ์ด์ค๊ฐ ์กด์ฌํ๋ค.
์์ฑ๋ ์๋ณธ html์ด ์ ํจํ์ง ์์ ๊ฒฝ์ฐ
์ด ๊ฒฝ์ฐ, ๋ธ๋ผ์ฐ์ ๋ ์๋์ผ๋ก html๋ฌธ์๋ฅผ ์์ (๊ต์ ํ๋ค)
์๋ณธ html ๋ฌธ์ <html> Case 1 <html/>
์์ฑ๋ DOM tree ๊ตฌ์กฐ <html> <head><head/> <body> Case 1 <body/> <html/>
๋ ๋๋ง ๋ ๋ธ๋ผ์ฐ์ ํ๋ฉด์ ๋ณด์์๋, ์ 2๊ฐ์ ์ฝ๋๋ ๋์ผํ๋ค. ํ์ง๋ง, ์๋ณธ html๋ฌธ์์ ์๋ head, bodyํ๊ทธ๋ฅผ ๋ธ๋ผ์ฐ์ ์์ ์์ ํ์ฌ DOM Tree์ ๋ฐ์๋๋ค.
Java Script์ ์ํ DOM ์์
์์ ๋งํ๋ฏ์ด, ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ๊ฐ์ ์ธํฐ๋์ ์ ์ํด DOM์ด ์ฌ์ฉ๋๋ค. ์ฆ, DOM์ ๋์ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค๋ ๋ป์ด๊ณ , ๋น์ฐํ๊ฒ๋ ์๋ณธ html๊ณผ DOM Tree๋ ๋ฌ๋ผ์ง๋ค.
** Example for Case 2 ** var case2 = document.createElement("div"); var case2_text = document.createTextNode("This is Test"); case2.appendChild(case2_text); document.body.appendChild(case2);
์ ์ฝ๋๋ 2๋ฒ์งธ ์์๋ฅผ ๋ํ๋ธ ๊ฒ์ด๋ค. case2๋ผ๋ ๋ณ์๋ document์ div ํ๊ทธ๋ฅผ ์์ฑํ๊ณ , case2_text๋ผ๋ ๋ณ์๋ ์์ฑ๋ div ํ๊ทธ ์์ "This is Test"๋ผ๋ ํ ์คํธ ๋ ธ๋๋ฅผ ์์ฑํ๋ค. ์ดํ ์ต์ข ์ ์ผ๋ก document์ case2๋ผ๋ ๋ณ์, ์ฆ div ํ๊ทธ ์ ํ ์คํธ๋ฅผ ์ถ๊ฐํ๋ค.
Java Script๋ฅผ ์ฌ์ฉํ์ฌ html๋ฌธ์๋ฅผ ๋์ ์ผ๋ก ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ์๊ณ , ์๋ณธ html๊ณผ DOM Tree๋ ๋น์ฐํ๊ฒ๋ ๊ตฌ์กฐ๊ฐ ๋ค๋ฅด๋ค.
Last updated