DOM Tree

  • ๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ (Document Object Model)์— ๋”ฐ๋ฅด๋ฉด, ๋ชจ๋“  HTML ํƒœ๊ทธ๋Š” ๊ฐ์ฒด๋‹ค. ํƒœ๊ทธ ํ•˜๋‚˜๊ฐ€ ๊ฐ์‹ธ๊ณ  ์žˆ๋Š” ์ž์‹ํƒœ๊ทธ๋Š” ์ค‘์ฒฉํƒœ๊ทธ(nested tag)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ํƒœ๊ทธ ๋‚ด ๋ฌธ์ž ์—ญ์‹œ ๊ฐ์ฒด๋‹ค. ๋ชจ๋“  ๊ฐ์ฒด๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ณ , ํŽ˜์ด์ง€๋ฅผ ์กฐ์ž‘ํ•  ๋•Œ ์ด ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

1. DOM ๊ตฌ์กฐ

<!DOCTYPE HTML>
<html>
<head>
  <title>์‚ฌ์Šด์— ๊ด€ํ•˜์—ฌ</title>
</head>
<body>
  ์‚ฌ์Šด์— ๊ด€ํ•œ ์ง„์‹ค.
</body>
</html>
dom_node.png
  • ํŠธ๋ฆฌ ์•ˆ์˜ ๋…ธ๋“œ๋Š” ๋ชจ๋‘ ๊ฐ์ฒด๋‹ค. ํƒœ๊ทธ๋Š” ์š”์†Œ๋…ธ๋“œ(element node)์ด๋ฉฐ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค. <html>์€ ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ๋˜๊ณ , <head>์™€ <body>๋Š” ๋ฃจํŠธ ๋…ธ๋“œ์˜ ์ž์‹์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

  • ์š”์†Œ ๋‚ด ๋ฌธ์ž๋Š” ํ…์ŠคํŠธ ๋…ธ๋“œ (text node)๊ฐ€ ๋œ๋‹ค. ์œ„ ๊ทธ๋ฆผ์—์„œ #text๋Š” ๋ฌธ์ž์—ด๋งŒ ๋‹ด์œผ๋ฉฐ, ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—†๊ณ , ํŠธ๋ฆฌ ๋์—์„œ ์žŽ ๋…ธ๋“œ(leaf node)๊ฐ€ ๋œ๋‹ค.

  • ํ…์ŠคํŠธ ๋…ธ๋“œ์— ์žˆ๋Š” ํŠน์ˆ˜๋ฌธ์ž๋Š” ํ•ญ์ƒ ์œ ํšจํ•œ ๋ฌธ์ž์ฒ˜๋Ÿผ ์ทจ๊ธ‰๋˜๋ฏ€๋กœ, ์•„๋ž˜ ๋‘ ํŠน์ˆ˜๋ฌธ์ž๋Š” ํ…์ŠคํŠธ ๋…ธ๋“œ๊ฐ€ ๋˜๊ณ , DOM์˜ ์ผ๋ถ€๊ฐ€ ๋œ๋‹ค.

    • ์ƒˆ ์ค„(newline): โ†ต (์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” \n๋กœ ํ‘œ์‹œ)

    • ๊ณต๋ฐฑ(space): โฃ

  • ํ•˜์ง€๋งŒ ํ…์ŠคํŠธ ๋…ธ๋“œ ์ƒ์„ฑ์—๋Š” ๋‘ ๊ฐ€์ง€ ์˜ˆ์™ธ๊ฐ€ ์žˆ๋‹ค.

    • ์—ญ์‚ฌ์ ์ธ ์ด์œ ๋กœ, <head> ์ด์ „์˜ ๊ณต๋ฐฑ๊ณผ ์ƒˆ ์ค„์€ ๋ฌด์‹œ๋œ๋‹ค.

    • HTML ๋ช…์„ธ์„œ์—์„œ ๋ชจ๋“  ์ปจํ…์ธ ๋Š” body ์•ˆ์ชฝ์— ์žˆ์–ด์•ผ ํ•˜๋ฏ€๋กœ, </body> ๋’ค์— ๋ฌด์–ธ๊ฐ€๋ฅผ ๋„ฃ๋”๋ผ๋„ ๊ทธ ์ปจํ…์ธ ๋Š” ์ž๋™์œผ๋กœ body ์•ˆ์ชฝ์œผ๋กœ ์˜ฎ๊ฒจ์ง„๋‹ค. ๋”ฐ๋ผ์„œ </body> ๋’ค์—๋Š” ๊ณต๋ฐฑ์ด ์žˆ์„ ์ˆ˜ ์—†๋‹ค.

2. ์ž๋™ ๊ต์ •

  • ๊ธฐํ˜•์ ์ธ HTML์„ ๋งŒ๋‚˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๋Š” DOM ์ƒ์„ฑ ๊ณผ์ •์—์„œ HTML์„ ์ž๋™์œผ๋กœ ๊ต์ •ํ•œ๋‹ค. (e.g.์ตœ์ƒ์œ„ ํƒœ๊ทธ๋Š” ํ•ญ์ƒ <html>์ด์–ด์•ผ ํ•˜๋Š”๋ฐ ์—†๋‹ค๋“ ๊ฐ€, ๋‹ซ๋Š” ํƒœ๊ทธ๊ฐ€ ์—†๋‹ค๋“ ๊ฐ€)

  • cf. ํ…Œ์ด๋ธ” ์‚ฌ์šฉ์‹œ, DOM์—์„œ๋Š” <tbody>๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ํ•˜์ง€๋งŒ, HTML์—์„œ๋Š” ์ด๋ฅผ ์ƒ๋žตํ•˜๋ฏ€๋กœ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ž๋™์œผ๋กœ DOM์— <tbody>๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

3. ๊ธฐํƒ€ ๋…ธ๋“œ ํƒ€์ž…

  • ์ฃผ์„๋„ ๋…ธ๋“œ๊ฐ€ ๋œ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ์ฃผ์„ ๋…ธ๋“œ (comment node) ํƒ€์ž…์€ ํ™”๋ฉด ์ถœ๋ ฅ๋ฌผ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋”๋ผ๋„ DOM์— ์ถ”๊ฐ€๋œ๋‹ค. HTML ์•ˆ์˜ ๋ชจ๋“  ๊ฒƒ์€ ์ฃผ์„์ด๋”๋ผ๋„ DOM์„ ๊ตฌ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

    <!-- comment -->
  • ๋น„์Šทํ•˜๊ฒŒ HTML ๋ฌธ์„œ ์ตœ์ƒ๋‹จ์˜ ๋„ DOM ๋…ธ๋“œ๋กœ ๋œ๋‹ค. ๋ฌธ์„œ ์ „์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” document ๊ฐ์ฒด ๋˜ํ•œ DOM ๋…ธ๋“œ๋‹ค.

**4. ์ฝ˜์†”์„ ์‚ฌ์šฉํ•ด DOM ๋‹ค๋ฃจ๊ธฐ

  • ๊ฐœ๋ฐœ์ž๋„๊ตฌ console ์ฐฝ์— document.body๋ฅผ ์ž…๋ ฅํ•ด DOM ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•ด ๋ณผ ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ๋””๋ฒ„๊น… ์šฉ๋„๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

    dom_console.png

Last updated