dom tree - Lee-hyuna/33-js-concepts-kr GitHub Wiki

์›๋ฌธ: DOM Tree

DOM Tree

HTML ๋ฌธ์„œ์˜ ๊ธฐ๋ณธ์€ ํƒœ๊ทธ๋‹ค.

Document Object Model(DOM)์— ๋”ฐ๋ฅด๋ฉด ๋ชจ๋“  HTML ํƒœ๊ทธ๋Š” ๊ฐ์ฒด๋‹ค.

ํ•œ ํƒœ๊ทธ์— ๋‘˜๋ ค์Œ“์—ฌ์ง„ ์ค‘์ฒฉ๋œ ํƒœ๊ทธ๋ฅผ "children"์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋˜ํ•œ ํƒœ๊ทธ ์•ˆ์— ์žˆ๋Š” ๊ธ€์ž(text)๋„ ๊ฐ์ฒด์ด๋‹ค.

์ด ๋ชจ๋“  ๊ฐ์ฒด๋“ค(ํƒœ๊ทธ)์€ Javascript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

DOM ์˜ˆ์ œ

์ด ๋ฌธ์„œ์˜ DOM์„ ์‚ดํŽด๋ณด๋„๋ก ํ•˜์ž.

<!DOCTYPE HTML>
<html>
<head>
  <title>About elks</title>
</head>
<body>
  The truth about elks.
</body>
</html>

DOM์€ ํƒœ๊ทธ์˜ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ์„œ HTML์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ธ๋‹ค.

ํƒœ๊ทธ๋Š” ์•จ๋ฆฌ๋จผํŠธ ๋…ธ๋“œ(element node) ๋˜๋Š” ์•จ๋ฆฌ๋จผ์ธ (element) ๋ผ๊ณ  ํ•œ๋‹ค. ์ƒ์œ„ ํƒœ๊ทธ๋กœ ๋‘˜๋Ÿฌ์Œ“์ธ ์ค‘์ฒฉ๋œ ํƒœ๊ทธ๋Š” ์ƒ์œ„ ํƒœ๊ทธ์˜ ์ž์‹๋“ค์ด ๋œ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ์•จ๋ฆฌ๋จผํŠธ ํŠธ๋ฆฌ๋ฅผ ์–ป๊ฒŒ ๋œ๋‹ค: <html>์€ ์ตœ ์ƒ์œ„์— ์กด์žฌํ•˜๋ฉฐ, ๊ทธ ์•„๋ž˜ <head>์™€ <body>์€ <html> ํƒœ๊ทธ์˜ ์ž์‹๋“ค์ด๋‹ค.

์•จ๋ฆฌ๋จผํŠธ ๋…ธ๋“œ ์•ˆ์˜ ํ…์ŠคํŠธ๋Š” #text๋กœ ํ‘œ์‹œ๋œ ํ…์ŠคํŠธ ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ํ…์ŠคํŠธ ๋…ธ๋“œ์—๋Š” ๋ฌธ์ž์—ด๋งŒ ํฌํ•จ๋œ๋‹ค. ํ…์ŠคํŠธ ๋…ธ๋“œ๋Š” ์ž์‹์„ ๊ฐ€์งˆ์ˆ˜ ์—†๊ณ  ํ•ญ์ƒ ํŠธ๋ฆฌ์˜ ์žŽ(leaf) ๋…ธ๋“œ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, <title> ํƒœ๊ทธ์—๋Š” "About elks"๋ผ๋Š” ํ…์ŠคํŠธ๊ฐ€ ์žˆ๋‹ค.

ํ…์ŠคํŠธ ๋…ธ๋“œ์˜ ํŠน์ˆ˜ ๋ฌธ์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์ค„๋ฐ”๊ฟˆ: โ†ต (Javascript์—์„  \n)
  • ๊ณต๋ฐฑ: โฃ

๊ณต๋ฐฑ๊ณผ ์ค„๋ฐ”๊ฟˆ์€ ์™„์ „ํ•˜๊ฒŒ ์œ ํšจํ•œ ๋ฌธ์ž์ด๋ฉฐ ํ…์ŠคํŠธ ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  DOM์˜ ์ผ๋ถ€๊ฐ€ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ์œ„์˜ ์˜ˆ์—์„œ <head> ํƒœ๊ทธ์—๋Š” <title> ์ด์ „์— ์ผ๋ถ€ ๊ณต๋ฐฑ์ด ํฌํ•จ๋˜์–ด ์žˆ๊ณ , ๊ทธ ๊ณต๋ฐฑ์€ #text ๋…ธ๋“œ๊ฐ€ ๋œ๋‹ค. ( ํ•ด๋‹น ๋…ธ๋“œ์—๋Š” ์ค„๋ฐ”๊ฟˆ๊ณผ ๋ช‡๊ฐœ์˜ ๊ณต๋ฐฑ๋งŒ ๋“ค์–ด์žˆ๋‹ค.)

๋‹จ, ๋‘๊ฐ€์ง€์˜ ์˜ˆ์™ธ ํ•ญ๋ชฉ์ด ์กด์žฌํ•œ๋‹ค.

  1. <head> ์ด์ „์˜ ๊ณต๋ฐฑ๊ณผ ์ค„๋ฐ”๊ฟˆ์€ ๋ฌด์‹œ๋œ๋‹ค.
  2. ๋งŒ์•ฝ </body> ๋’ค์— ๋ฌด์–ธ๊ฐ€๋ฅผ ๋„ฃ์œผ๋ฉด, HTML ์ŠคํŽ™์ด ๋ชจ๋“  ๋‚ด์šฉ๋“ค์€ <body> ์•ˆ์— ์žˆ์–ด์•ผํ•œ๋‹ค๊ณ  ์š”๊ตฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ตญ์—” ์ž๋™์ ์œผ๋กœ body์•ˆ์œผ๋กœ ์ด๋™ํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ </body> ๋’ค์—” ๊ณต๋ฐฑ์ด ์—†์„์ˆ˜๋„ ์žˆ๋‹ค.

์ด ์™ธ์—๋Š” document์— ๊ณต๋ฐฑ์ด๋‚˜ ์–ด๋–ค ๋ฌธ์ž๋ผ๋„ ์žˆ์œผ๋ฉด DOM์˜ ํ…์ŠคํŠธ ๋…ธ๋“œ๊ฐ€ ๋œ๋‹ค. ์ด๋Ÿฐ ํ…์ŠคํŠธ ๋…ธ๋“œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์ง€์šฐ๊ณ  ์‹ถ์–ด๋„ ์ง€์šธ ์ˆ˜ ์—†๋‹ค.

์•„๋ž˜๋Š” ์—ฌ๋ฐฑ์ด ์—†๊ณ  ์˜ค์ง ํ…์ŠคํŠธ ๋…ธ๋“œ๋งŒ ์žˆ๋Š” ์˜ˆ์ด๋‹ค.

<!DOCTYPE HTML>
<html><head><title>About elks</title></head><body>The truth about elks.</body></html>

์ค„์˜ ๋งจ ๋งˆ์ง€๋ง‰ ๊ณต๋ฐฑ ๋ฐ ์ค‘๊ฐ„์— ๋นˆ ํ…์ŠคํŠธ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์—” ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š”๋‹ค.

DOM์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ธŒ๋ผ์šฐ์ € ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ…์ŠคํŠธ์˜ ์‹œ์ž‘ / ๋ ๋ถ€๋ถ„์— ๊ณต๋ฐฑ์„ ํ‘œ์‹œํ•˜์ง€ ์•Š๊ณ  ํƒœ๊ทธ ์‚ฌ์ด์— ๋นˆ ํ…์ŠคํŠธ ๋…ธ๋“œ (์ค„ ๋ฐ”๊ฟˆ)๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ด๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ HTML์„ ๊พธ๋ฏธ๊ธฐ ์œ„ํ•ด ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์—, HTML์ด ์–ด๋–ป๊ฒŒ ํ‘œ์‹œ๋˜๋Š”์ง€์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์•ž์œผ๋กœ ๋ณผ DOM ๊ทธ๋ž˜ํ”„์—์„œ๋Š” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋ณด์ด๊ธฐ ์œ„ํ•ด ์ด๋Ÿฌํ•œ ํ…์ŠคํŠธ ๋…ธ๋“œ๋ฅผ ์ƒ๋žต ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ž๋™ ๋ณด์ •

๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ด์ƒํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ง„ HTML์„ ๋ฐœ๊ฒฌํ•˜๋ฉด DOM์„ ์ž‘์„ฑํ•  ๋•Œ ์ž๋™์œผ๋กœ ์ˆ˜์ • ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ตœ์ƒ๋‹จ ํƒœ๊ทธ๋Š” ํ•ญ์ƒ <html> ์ด๋‹ค. ํ•˜์ง€๋งŒ <html>์ด ๋ฌธ์„œ์— ์กด์žฌํ•˜์ง€ ์•Š๋”๋ผ๋„, DOM์— ์กด์žฌํ•  ๊ฒƒ์ด๊ณ , ๋ธŒ๋ผ์šฐ์ €๋Š” ๊ทธ๊ฒƒ์„ ์ƒ์„ฑ ํ•  ๊ฒƒ์ด๋‹ค. <body> ๋˜ํ•œ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค.

HTML ํŒŒ์ผ์ด ํ•˜๋‚˜์˜ ๋‹จ์–ด ์ธ ๊ฒฝ์šฐ, ์˜ˆ๋ฅผ ๋“ค์–ด "Hello"๋ผ๋ฉด ๋ธŒ๋ผ์šฐ์ €๋Š” <html>๋กœ ๊ฐ์‹ธ๊ณ  <body>๋กœ ๊ฐ์‹ธ๊ณ , <head>๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค . ๋”ฐ๋ผ์„œ DOM์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„ ์งˆ ๊ฒƒ์ด๋‹ค.

DOM์„ ์ƒ์„ฑํ•˜๋Š” ๋™์•ˆ ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ฌธ์„œ์˜ ์˜ค๋ฅ˜๋ฅผ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ํƒœ๊ทธ๋ฅผ ๋‹ซ๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋‹ซํžˆ์ง€ ์•Š์€ ํƒœ๊ทธ๊ฐ€ ์žˆ๋Š” ๋ฌธ์„œ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž:

<p>Hello
<li>Mom
<li>and
<li>Dad

๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํƒœ๊ทธ๋ฅผ ์ฝ๊ณ  ๋ˆ„๋ฝ๋œ ๋ถ€๋ถ„์„ ๋ณต๊ตฌํ•˜์—ฌ ์ •์ƒ์ ์ธ DOM์ด ๋  ๊ฒƒ์ด๋‹ค.

ํ…Œ์ด๋ธ”์€ ํ•ญ์ƒ <tbody>๊ฐ€ ์กด์žฌํ•œ๋‹ค.

ํ…Œ์ด๋ธ”์€ ํฅ๋ฏธ๋กญ๊ฒŒ๋„ ์กฐ๊ธˆ "ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ"์ด๋‹ค. DOM ์‚ฌ์–‘์— ๋”ฐ๋ผ ๋ฐ˜๋“œ์‹œ<tbody>๊ฐ€ ์žˆ์–ด์•ผํ•˜์ง€๋งŒ HTML ํ…์ŠคํŠธ๋Š” (๊ณต์‹์ ์œผ๋กœ) ์ƒ๋žต์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ธŒ๋ผ์šฐ์ €๋Š” DOM์— <tbody>๋ฅผ ์ž๋™์œผ๋กœ ๋งŒ๋“ ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์€ HTML์„ ์˜ˆ๋กœ ๋“ค์–ด๋ณด์ž.

<table id="table"><tr><td>1</td></tr></table>

DOM ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๊ฒƒ์ด๋‹ค.:

<tbody>๊ฐ€ ๋ถˆ์‘ฅ ๋‚˜ํƒ€๋‚ฌ๋‹ค. ํ…Œ์ด๋ธ” ์ž‘์—…์„ ํ•  ๋•Œ ์ด ์ ์„ ๋ช…์‹ฌํ•ด๋ผ.

๋‹ค๋ฅธ ๋…ธ๋“œ ์œ ํ˜•

ํŽ˜์ด์ง€์— ๋” ๋งŽ์€ ํƒœ๊ทธ์™€ ์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ด๋ณด์ž.

<!DOCTYPE HTML>
<html>
<body>
  The truth about elks.
  <ol>
    <li>An elk is a smart</li>
    <!-- comment -->
    <li>...and cunning animal!</li>
  </ol>
</body>
</html>

์—ฌ๊ธฐ์„œ ์ƒˆ๋กœ์šด ํŠธ๋ฆฌ ๋…ธ๋“œ ์œ ํ˜•, #comment๋กœ ํ‘œ์‹œ๋œ ์ฃผ์„ ๋…ธ๋“œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์™œ DOM์— ์ฃผ์„ ๋…ธ๋“œ๊ฐ€ ์ถ”๊ฐ€๋˜๋Š”๊ฐ€๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฝ”๋ฉ˜ํŠธ ๋…ธ๋“œ๋Š” ์‹œ๊ฐ์  ํ‘œํ˜„์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ ๊ทœ์น™์ด ์žˆ๋‹ค. HTML์— ์–ด๋–ค ๊ฒƒ์ด ์žˆ๋‹ค๋ฉด, ๊ทธ๊ฒƒ์€ ๋ฐ˜๋“œ์‹œ DOM ํŠธ๋ฆฌ์—๋„ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

HTML์•ˆ์˜ ๋ชจ๋“  ๊ฒƒ๋“ค์€, ์‹ฌ์ง€์–ด ์ฃผ์„๋„, DOM์˜ ์ผ๋ถ€๊ฐ€ ๋œ๋‹ค.

HTML์˜ ๋งจ ์ฒ˜์Œ์—์žˆ๋Š” <!DOCTYPE...> ์ง€์‹œ์ž ์กฐ์ฐจ๋„ DOM ๋…ธ๋“œ๋‹ค. DOM ํŠธ๋ฆฌ์—์„œ <!DOCTYPE...> ์€ <html> ๋ฐ”๋กœ ์•ž์— ์กด์žฌํ•œ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ ๋…ธ๋“œ๋ฅผ ๊ฑด๋“ค์ง€ ์•Š์„ ๊ฒƒ์ด๊ณ , ๊ทธ๋Ÿฐ ์ด์œ ๋กœ ๋‹ค์ด์–ด๊ทธ๋žจ์— ๊ทธ๋ฆฌ์ง€๋„ ์•Š์„ ๊ฒƒ์ด์ง€๋งŒ ๊ทธ ์ž๋ฆฌ์— ์กด์žฌํ•˜๊ณ  ์žˆ๋‹ค.

์ „์ฒด ๋ฌธ์„œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” document ๊ฐ์ฒด๋Š” ๊ณต์‹์ ์œผ๋กœ DOM ๋…ธ๋“œ์ด๊ธฐ๋„ ํ•˜๋‹ค.

12๊ฐœ์˜ ๋…ธ๋“œ ์œ ํ˜•์ด ์žˆ๋‹ค. ์‹ค์ œ๋กœ ์ด ๋ฌธ์„œ์—์„œ ๊ทธ์ค‘ 4๊ฐœ๋ฅผ ์ผ๋‹ค.

  1. document - DOM์˜ "์‹œ์ž‘ ์ง€์ "
  2. ์—˜๋ฆฌ๋จผํŠธ ๋…ธ๋“œ - HTML ํƒœ๊ทธ, ํŠธ๋ฆฌ ๊ตฌ์„ฑ ๋ธ”๋ก
  3. ํ…์ŠคํŠธ ๋…ธ๋“œ - ํ…์ŠคํŠธ ํฌํ•จ
  4. ์ฃผ์„ - ๋•Œ๋กœ๋Š” ์ •๋ณด๋ฅผ ํ‘œ์‹œ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํ‘œ์‹œ๋˜์ง€๋Š” ์•Š๋Š”๋‹ค. JS๋Š” DOM์„ ํ†ตํ•ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

์‹ค์ œ๋กœ ์‚ดํŽด๋ณด๊ธฐ

์‹ค์‹œ๊ฐ„์œผ๋กœ DOM ๊ตฌ์กฐ๋ฅผ ๋ณด๋ ค๋ฉด Live DOM Viewer๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์ž. document์— ์ž…๋ ฅํ•˜๊ธฐ ๋งŒํ•˜๋ฉด DOM์ด ์ฆ‰์‹œ ํ‘œ์‹œ๋œ๋‹ค.

๋ธŒ๋ผ์šฐ์ € ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋กœ ๋ณด๊ธฐ

DOM์„ ํƒ์ƒ‰ํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ๋ธŒ๋ผ์šฐ์ € ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์‹ค์ œ๋กœ, ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋Š” ๊ฐœ๋ฐœํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์›น ํŽ˜์ด์ง€ elks.html์„ ์—ด๊ณ  ๋ธŒ๋ผ์šฐ์ € ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ํ‚จ๋‹ค์Œ ์š”์†Œ ํƒญ์œผ๋กœ ์ „ํ™˜ํ•œ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ผ ๊ฒƒ์ด๋‹ค.

์ด์ œ DOM์„ ๋ณด๊ณ , ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ํด๋ฆญํ•˜๊ณ , ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๋ณด๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๋„๊ตฌ์˜ DOM ๊ตฌ์กฐ๊ฐ€ ๋‹จ์ˆœํ™” ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ช…์‹ฌํ•˜๋ผ. ํ…์ŠคํŠธ ๋…ธ๋“œ๋Š” ๋‹จ์ˆœํžˆ ํ…์ŠคํŠธ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  "black"(๊ณต๋ฐฑ ์ „์šฉ) ํ…์ŠคํŠธ ๋…ธ๋“œ๊ฐ€ ์ „ํ˜€ ์—†๋‹ค.

์™ผ์ชฝ ์œ„ ๋ชจ์„œ๋ฆฌ์˜ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด, ์›น ํŽ˜์ด์ง€์—์„œ ๋…ธ๋“œ๋ฅผ ์„ ํƒ(๋˜๋Š” Elements ํƒญ์—์„œ ์„ ํƒ)ํ•˜๊ณ  ์‚ดํŽด ๋ณผ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฑฐ๋Œ€ํ•œ HTML ํŽ˜์ด์ง€(๊ทธ๋ฆฌ๊ณ  ๊ทธ์— ์ƒ์‘ํ•˜๋Š” ๊ฑฐ๋Œ€ํ•œ DOM)๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ๊ทธ ์•ˆ์— ์žˆ๋Š” ํŠน์ • ์—˜๋ฆฌ๋จผํŠธ์˜ ์œ„์น˜๋ฅผ ๋ณด๊ณ  ์‹ถ์„ ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋œ๋‹ค.

๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ์›น ํŽ˜์ด์ง€๋ฅผ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์œผ๋กœ ํด๋ฆญํ•˜๊ณ  ์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด์—์„œ "Inspect"๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ฐœ๋ฐœ์ž ๋„๊ตฌ์˜ ์˜ค๋ฅธ์ชฝ ๋ถ€๋ถ„์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ subtab์ด ์žˆ๋‹ค.

  • Styles - ๊ธฐ๋ณธ ์ œ๊ณต ๊ทœ์น™(gray)์„ ํฌํ•จํ•˜์—ฌ ๊ทœ์น™ ๋ณ„๋กœ ํ˜„์žฌ ์—˜๋ฆฌ๋จผํŠธ ๊ทœ์น™์— ์ ์šฉ๋˜๋Š” CSS๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜ ๋ฐ•์Šค์˜ ์น˜์ˆ˜/๋งˆ์ง„/ํŒจ๋”ฉ์„ ํฌํ•จํ•˜์—ฌ ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์„ ๊ทธ ์ž๋ฆฌ์—์„œ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Computed - ์†์„ฑ๋ณ„๋กœ ์š”์†Œ์— ์ ์šฉ๋œ CSS๋ณด๊ธฐ : ๊ฐ ์†์„ฑ์— ๋Œ€ํ•ด CSS ์ƒ์†์„ ํฌํ•จํ•œ ๊ทœ์น™์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • Event Listener - DOM ์š”์†Œ์— ์—ฐ๊ฒฐ๋œ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • ๊ธฐํƒ€๋“ฑ๋“ฑ

์ด๊ฒƒ๋“ค์„ ๊ณต๋ถ€ํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ํด๋ฆญํ•ด ๋ณด๋Š” ๊ฒƒ์ด๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฐ’์€ ๋‚ด๋ถ€ ํŽธ์ง‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ฝ˜์†”๊ณผ์˜ ์ƒํ˜ธ ์ž‘์šฉ

DOM์„ ํƒ์ƒ‰ ํ•  ๋•Œ Javascript๋ฅผ ์ ์šฉํ•˜๋ ค๊ณ  ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ ธ ์™€์„œ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•œ๋‹ค. ๋‹ค์Œ์€ Elements tab๊ณผ console ์‚ฌ์ด๋ฅผ ์ด๋™ํ•  ๋•Œ ์œ ์šฉํ•œ ๋ช‡ ๊ฐ€์ง€ ํŒ์ด๋‹ค.

  • Elements tab์—์„œ ์ฒซ ๋ฒˆ์งธ <li>๋ฅผ ์„ ํƒํ•ด ๋ณด์ž.
  • Esc ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด, Elements tab ๋ฐ”๋กœ ์•„๋ž˜์— console์ด ์—ด๋ฆฐ๋‹ค.

์ด์ œ ์ฝ˜์†”์—์„œ ๋งˆ์ง€๋ง‰์œผ๋กœ ์„ ํƒํ•œ ์—˜๋ฆฌ๋จผํŠธ๋Š” $0๋กœ, ์ด์ „์— ์„ ํƒํ•œ ์š”์†Œ๋Š” $1๋กœ ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ปค๋งจ๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, $0.sthtmlyle.background = 'red'๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ํƒ๋œ ๋ชฉ๋ก ํ•ญ๋ชฉ์„ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ๋งŒ๋“ ๋‹ค.

๋ฐ˜๋Œ€๋กœ , DOM ๋…ธ๋“œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ณ€์ˆ˜๊ฐ€ ์ฝ˜์†”์— ์žˆ๋Š” ๊ฒฝ์šฐ, inspect(node)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Elements tab์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์•„๋‹ˆ๋ฉด ๊ทธ๋ƒฅ ์ฝ˜์†”์— ์ถœ๋ ฅํ•ด์„œ "์žˆ๋Š” ๊ณณ"์„ ํƒ์ƒ‰ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์•„๋ž˜ document.body ์ฒ˜๋Ÿผ:

์ด๋Ÿฐ ๊ฒƒ๋“ค์€ ๋””๋ฒ„๊น…์„ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค. ๋‹ค์Œ ์žฅ์—์„œ Javascript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ DOM์— ์ ‘๊ทผํ•˜๊ณ  ์ˆ˜์ •ํ•  ๊ฒƒ์ด๋‹ค.

๋ธŒ๋ผ์šฐ์ € ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋Š” ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ํฐ ๋„์›€์ด ๋œ๋‹ค. DOM์„ ํƒ์ƒ‰ํ•˜๊ณ , ์‹œ๋„ํ•˜๊ณ , ์ž˜๋ชป๋œ ์ ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.

์š”์•ฝ

HTML/XML ๋ฌธ์„œ๋Š” ๋ธŒ๋ผ์šฐ์ € ๋‚ด๋ถ€์— DOM ํŠธ๋ฆฌ๋กœ ํ‘œ์‹œ๋œ๋‹ค.

  • ํƒœ๊ทธ๋Š” ์—˜๋ฆฌ๋จผํŠธ ๋…ธ๋“œ๊ฐ€๋˜์–ด ๊ตฌ์กฐ๋ฅผ ํ˜•์„ฑํ•œ๋‹ค.
  • ํ…์ŠคํŠธ๋Š” ํ…์ŠคํŠธ ๋…ธ๋“œ๊ฐ€ ๋œ๋‹ค.
  • ๊ธฐํƒ€๋“ฑ๋“ฑ, HTML์— ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ๋“ค์€, ์‹ฌ์ง€์–ด ์ฃผ์„์— ๊นŒ์ง€๋„ DOM์— ์กด์žฌํ•œ๋‹ค.

๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ DOM์„ ๊ฒ€์‚ฌํ•˜๊ณ  ์ˆ˜๋™์œผ๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ๋Š” ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์ค‘์š”ํ•œ ์ž‘์—…์— ๋Œ€ํ•ด ํ–ˆ๋‹ค. Chrome ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ https://developers.google.com/web/tools/chrome-devtools๋ฅผ ์ฐธ์กฐํ•˜๋ผ. ๋„๊ตฌ๋ฅผ ๋ฐฐ์šฐ๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์—ฌ๊ธฐ ์ €๊ธฐ ๋ˆŒ๋Ÿฌ๋ณด๊ณ  ๋ฉ”๋‰ด๋ฅผ ์ฝ๋Š” ๊ฒƒ์ด๋‹ค.(๋Œ€๋ถ€๋ถ„์˜ ์˜ต์…˜). ๋‚˜์ค‘์—, ์ „๋ฐ˜์ ์œผ๋กœ ์ด๊ฒƒ๋“ค์„ ์•Œ๊ฒŒ๋˜๋ฉด, ๋ฌธ์„œ๋ฅผ ์ฝ๊ณ  ๋‚˜๋จธ์ง€๋Š” ์„ ํƒํ•ด์„œ ๋ฐฐ์›Œ๋ผ.

DOM ๋…ธ๋“œ๋Š” ๊ทธ ์‚ฌ์ด๋ฅผ ์ด๋™ํ•˜๊ณ  ํŽ˜์ด์ง€๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜์žˆ๋Š” ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ ์žฅ์—์„œ ๋ฐฐ์›Œ๋ณผ ๊ฒƒ์ด๋‹ค.

โš ๏ธ **GitHub.com Fallback** โš ๏ธ