๐Ÿ“„ DOM์ด๋ž€?

DOM(Document Object Model)์€ HTML ๋ฌธ์„œ๋ฅผ ๊ฐ์ฒด(Object)์˜ ํŠธ๋ฆฌ ๊ตฌ์กฐ(Tree Structure) ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ์œผ๋กœ, ์›น ํŽ˜์ด์ง€๋ฅผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ์  ๊ธฐ๋ฐ˜์ž…๋‹ˆ๋‹ค.


๐Ÿ“Œ ํ•ต์‹ฌ ์š”์•ฝํ‘œ

ํ•ญ๋ชฉ ์„ค๋ช…
์ •์˜ HTML ๋ฌธ์„œ๋ฅผ ํŠธ๋ฆฌ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•œ ๊ตฌ์กฐ (๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ)
์—ญํ•  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ HTML์„ ์ฝ๊ณ , ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ
์ƒ์„ฑ ์‹œ์  ๋ธŒ๋ผ์šฐ์ €๊ฐ€ HTML์„ ์ฝ๊ณ  ํŒŒ์‹ฑํ•  ๋•Œ
์ฃผ์š” ๊ธฐ๋Šฅ ์š”์†Œ ํƒ์ƒ‰, ์†์„ฑ ์ˆ˜์ •, ์Šคํƒ€์ผ ๋ณ€๊ฒฝ, ์š”์†Œ ์ถ”๊ฐ€/์‚ญ์ œ ๋“ฑ
์‚ฌ์šฉ ์ด์œ  ์›น์„ ๋™์ ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ•„์ˆ˜์ ์ธ ๊ธฐ์ˆ 

๐ŸŒณ DOM์˜ ์ƒ์„ฑ ์›๋ฆฌ

HTML ๋ฌธ์„œ๊ฐ€ ๋กœ๋“œ๋˜๋ฉด, ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ฌธ์„œ๋ฅผ ํŒŒ์‹ฑ(parsing) ํ•˜์—ฌ ๋‚ด๋ถ€์ ์œผ๋กœ DOM ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

DOM ํŠธ๋ฆฌ๋Š” ๋ฌธ์„œ ๊ตฌ์กฐ๋ฅผ ๊ณ„์ธต์ ์œผ๋กœ ํ‘œํ˜„ํ•œ ํŠธ๋ฆฌ ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค. ๊ฐ ์š”์†Œ(ํƒœ๊ทธ, ํ…์ŠคํŠธ, ์ฃผ์„ ๋“ฑ)๋Š” โ€˜๋…ธ๋“œ(Node)โ€™๋ผ๊ณ  ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค.


๐Ÿงฑ DOM ํŠธ๋ฆฌ ์˜ˆ์‹œ

๋‹ค์Œ HTML์„ DOM ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ํ‘œํ˜„ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

<!DOCTYPE html>
<html>
  <body>
    <h1>์•ˆ๋…•</h1>
    <!-- ์—ฌ๊ธฐ ์ฃผ์„ -->
  </body>
</html>

๐Ÿงญ DOM ํŠธ๋ฆฌ ๊ตฌ์กฐ (ํ…์ŠคํŠธ ํ‘œํ˜„)

Document
โ””โ”€โ”€ DocumentType (<!DOCTYPE html>)
โ””โ”€โ”€ html (Element)
    โ””โ”€โ”€ body (Element)
        โ”œโ”€โ”€ h1 (Element)
        โ”‚   โ””โ”€โ”€ "์•ˆ๋…•" (Text)
        โ””โ”€โ”€ Comment ("์—ฌ๊ธฐ ์ฃผ์„")


๐Ÿงฉ DOM์˜ ๊ตฌ์„ฑ ์š”์†Œ (๋…ธ๋“œ ์ข…๋ฅ˜)

๋…ธ๋“œ ์ข…๋ฅ˜ ์„ค๋ช…
Document Node ๋ฌธ์„œ ์ „์ฒด๋ฅผ ๋Œ€ํ‘œํ•˜๋Š” ์ตœ์ƒ์œ„ ๋…ธ๋“œ
Element Node HTML ํƒœ๊ทธ ์š”์†Œ (<div>, <h1> ๋“ฑ)
Text Node ์š”์†Œ ์•ˆ์˜ ํ…์ŠคํŠธ ๋‚ด์šฉ
Attribute Node HTML ์†์„ฑ (id, class ๋“ฑ)
Comment Node ์ฃผ์„ (<!-- ์ฃผ์„ -->)

Node๋Š” HTML์˜ ๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํฌ๊ด„ํ•ฉ๋‹ˆ๋‹ค.

Element Node๋Š” HTML ํƒœ๊ทธ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.