๐ป DOM์ ์ด์ฉํ ์ด๋ฒคํธ ์ฒ๋ฆฌ
HTML ์์์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ฐ๊ฒฐํด๋์ผ๋ฉด ํ๊ทธ ์์ฑ๊ณผ ์๋ฐ์คํฌ๋ฆฝํธ ์์ค๊ฐ ์์ด๊ฒ ๋ฉ๋๋ค.
๊ทธ๋์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์์ ํ๋ ค๋ฉด HTML ํ๊ทธ์ ์์ฑ์ ํ๋์ฉ ์ฐพ์๋ณด์์ผ ํฉ๋๋ค.
ํ์ง๋ง DOM์ ์ด์ฉํ์ฌ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ฒ๋ฆฌํ๋ฉด
ํ๊ทธ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ค๊ฐ ๋ถ๋ฆฌ๋๋ฉด์ ๋ณด๊ธฐ ์ข๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์์ ๋ฐฐ์ด ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ HTML์ด ์ฃผ์ธ์ด ๋์ด ์๋ฐ์คํฌ๋ฆฝํธ์ ํจ์๋ฅผ ๋ถ๋ฌ์ ์คํํ์ต๋๋ค.
ํ์ง๋ง DOM์ ์ฌ์ฉํ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ฃผ์ธ์ด ๋์ด HTML์์๋ฅผ ๊ฐ์ ธ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค.
[๊ธฐ๋ณธํ] <script> HTML์น์์.on์ด๋ฒคํธ๋ช = ํจ์๋ช ; => โญ ์๊ดํธ๋ฅผ ๋ถ์ด์ง ์์ต๋๋ค. </script>
๐ป DOM์ ์ด์ฉํ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ก ์์ธ๊ธ ํ์ด์ง ๋ง๋ค์ด๋ณด๊ธฐ!
๐ป ๋ฌธ์ ๊ฐ์ฒด, DOM(Document object model)
์น์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ์ด๋ค ์กฐ๊ฑด์ ๋ง๊ฑฐ๋ ์ฌ์ฉ์์ ๋์์ด ์์ ๋
์น ๋ฌธ์ ์ ์ฒด ๋๋ ์ผ๋ถ๋ถ์ด ๋์ ์ผ๋ก ๋ฐ์ํ๊ฒ ํ๊ธฐ ์ํด์ ์ ๋๋ค.
์ด๋ ๊ฒ ๋ฐ์ํ๊ฒ ํ๋ ค๋ฉด ์น ๋ฌธ์์ ๋ชจ๋ ์์๋ฅผ ๋ฐ๋ก ์ ์ดํ ์ ์์ด์ผ ํฉ๋๋ค.
DOM(๋ฌธ์๊ฐ์ฒด)๋ HTMLํ๊ทธ ๊ตฌ์กฐ๋ฅผ ํ๋์ฉ ์ฝ์ด๋ด๋ ค๊ฐ๋ฉด์
์์์ ์์๊ฐ์ ํฌํจ๊ด๊ณ๋ฅผ ๊ตฌ์กฐํํ์ฌ ์ ์ฅํฉ๋๋ค.
์ด๋ ํ๋ ํ๋์ ํ๊ทธ ํฌํจ๊ด๊ณ๋ ์์๋ฅผ NODE๋ผ๊ณ ํํํฉ๋๋ค.
์ด ๋ ธ๋๋ค์ ์๊ฐํํ์ฌ ํ๋๋ก ํํํ๋ฉด ๋ง์น ๋๋ฌด ๋ฟ๋ฆฌ์ ๋ฎ์๋ค๊ณ ํ์ฌ 'DOMํธ๋ฆฌ'๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ์ ํ ๋ง๋๋ก ์ ์ํ์๋ฉด
'์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ์ฌ ์น ๋ฌธ์์ ์ ๊ทผํ๊ณ ์ ์ดํ ์ ์๋๋ก
๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด ์น ๋ฌธ์๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ์ ๋ฆฌํ๋ ๋ฐฉ๋ฒ'์ด๋ผ๊ณ ๋งํ ์ ์์ต๋๋ค.
HTML์ธ์ด๋ก ์์ฑํ ์น ๋ฌธ์์ DOM์ HTML DOM์ด๋ผ๊ณ ํ๋ฉฐ, XML๋ฌธ์์์ ์ฌ์ฉํ๋ XML DOM๋ ์์ต๋๋ค.
DOM์ ์น ๋ฌธ์๋ฅผ ํ๋์ ๊ฐ์ฒด๋ก ์ ์ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์น ๋ฌธ์๋ฅผ ์ด๋ฃจ๋ ํ ์คํธ๋ ์ด๋ฏธ์ง, ํ ๋ฑ์ ๋ชจ๋ ์์๋ ๊ฐ๊ฐ ๊ฐ์ฒด๋ก ์ ์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด ์น ๋ฌธ์ ์ ์ฒด๋ document ๊ฐ์ฒด์ด๊ณ , ์์ ์๋ ์ด๋ฏธ์ง๋ image ๊ฐ์ฒด์ ๋๋ค.
์ด์ฒ๋ผ DOM์ ์น ๋ฌธ์์ ๊ทธ ์์ ๋ชจ๋ ์์๋ฅผ '๊ฐ์ฒด'๋ก ์ธ์ํ๊ณ ์ฒ๋ฆฌํฉ๋๋ค.
โญ DOM ํธ๋ฆฌ
์๋ฐ์คํฌ๋ฆฝํธ๋ก DOM์ ์กฐ์ํ๋ ค๋ฉด ์ค์ ์น ๋ฌธ์๊ฐ DOM์ผ๋ก ์ด๋ป๊ฒ ํํ๋๋์ง ์๊ณ ์์ด์ผ ํฉ๋๋ค.
DOMํธ๋ฆฌ์ ์ต์์ ๊ฐ์ฒด๋ก๋ Document๊ฐ ์๊ณ ๊ณง HTML ๋ฌธ์ ์ ์ฒด๋ฅผ ๋ปํฉ๋๋ค.
์ด ์์ ์์์ผ๋ก <head>,<body>๊ฐ ์๊ณ head์์๋ meta๋ title, link๋ฑ์ ํ๊ทธ๊ฐ ๋ค์ด์์ต๋๋ค.
body์์๋ header์ footer, main, div, section ๋ฑ๋ฑ์ ํ๊ทธ๋ค์ด ์๋ก ๋ถ๋ชจ ์์ ๊ด๊ณ๋ฅผ ๊ฐ์ต๋๋ค.
์ด๊ฒ์ ์๊ฐํํ์ฌ ์ ๋ฆฌํ ๊ฒ์ 'DOMํธ๋ฆฌ'๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
์ด๋ ๊ฒ ๋ถ๋ชจ์ ์์๊ตฌ์กฐ๋ก ํ๊ทธ๋ค์ ๊ตฌ์กฐ๋ฅผ ํํํ๋ฉด ๋ง์น ๋๋ฌดํํ๊ฐ ๋์ด 'DOMํธ๋ฆฌ'๋ผ๊ณ ํ๊ณ
ํธ๋ฆฌ์์ ๊ฐ์ง๊ฐ ๊ฐ๋ผ์ ธ ๋์จ ํญ๋ชฉ์ '๋ ธ๋(node)'๋ผ๊ณ ํฉ๋๋ค.
domํธ๋ฆฌ์ ์์ ๋ถ๋ถ์ธ html๋ ธ๋๋ฅผ ๋๋ฌด ๋ฟ๋ฆฌ์ ํด๋นํ๋ค๊ณ ํ์ฌ '๋ฃจํธ(root)๋ ธ๋'๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
๋ฃจํธ ๋ ธ๋๋ฅผ ์์์ผ๋ก ์น ๋ฌธ์์์ ์ฌ์ฉํ ์์๋ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ์ด๋ฃน๋๋ค.
๋ฐ๋ผ์ ๊ฐ ๋ ธ๋ ์ฌ์ด์ ๊ด๊ณ๋ฅผ ๋ถ๋ชจ์ ์์, ํ์ ๋ก ํํํ ์ ์์ต๋๋ค.
๋ถ๋ชจ๋ ธ๋(parent)์๋ ์์๋ ธ๋(child)๊ฐ ์๊ณ , ๋ถ๋ชจ๋ ธ๋๊ฐ ๊ฐ์ ํ์ ๋ ธ๋(sibling)๋ ธ๋๊ฐ ์์ต๋๋ค.
โญ [DOM์ ๊ตฌ์ฑํ๋ ๊ธฐ๋ณธ ์์น] 1. ๋ชจ๋ HTMLํ๊ทธ๋ ์์(element)๋ ธ๋ ์ ๋๋ค. 2. HTMLํ๊ทธ์์ ์ฌ์ฉํ๋ ํ ์คํธ ๋ด์ฉ์ ์์๋ ธ๋์ธ ํ ์คํธ(text)๋ ธ๋ ์ ๋๋ค. 3. HTMLํ๊ทธ์ ์์ฑ์ ์์๋ ธ๋์ธ ์์ฑ(attribute)๋ ธ๋ ์ ๋๋ค. 4. ์ฃผ์์ ์ฃผ์(comment)๋ ธ๋ ์ ๋๋ค.
โญ DOM ์์์ ์ ๊ทผํ๊ณ ์์ฑ ๊ฐ์ ธ์ค๊ธฐ
์น ๋ฌธ์์์ ์ฌ์ฉํ ์ฌ๋ฌ ์ด๋ฏธ์ง ๊ฐ์ด๋ฐ ํ๋๋ง ๊ณจ๋ผ์ ํฌ๊ธฐ๋ฅผ ๋ฐ๊พธ๋ ค๋ฉด ์ฝ ์ง์ด์ ๊ฐ์ ธ์ฌ ์ ์์ด์ผ ํฉ๋๋ค.
์ด๋ ๊ฒ ์น ๋ฌธ์์์ ์ํ๋ ์์๋ฅผ ์ฐพ์๊ฐ๋ ๊ฒ์ '์ ๊ทผํ๋ค'๋ผ๊ณ ํํํฉ๋๋ค.
๐จ๏ธ ์์ผ๋ก ์ง์ ๊ณต๋ถํ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์์ฑํ ๊ธ์ด๋๋๋ค !
โ๏ธ
์์ผ๋ก๋ ์ด์ฌํ ๊ณต๋ถํด์ ๋ง์ ๋ด์ฉ์ ๊ณต์ ํ๊ฒ ์ต๋๋ค :)