๐Ÿ”Žย DOM

๊ฐ€์˜ค๋ฆฌยท2023๋…„ 2์›” 12์ผ
0

keyword

๋ชฉ๋ก ๋ณด๊ธฐ
5/6
post-thumbnail

DOM: Document Object Model

  • XML, HTML ๋ฌธ์„œ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์ผ์ข…์˜ ์ธํ„ฐํŽ˜์ด์Šค
  • ๋ฌธ์„œ์˜ ๊ตฌ์กฐํ™”๋œ ํ‘œํ˜„์„ ์ œ๊ณตํ•˜๋ฉฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ DOM ๊ตฌ์กฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๊ณ  ๊ทธ๊ฒƒ๋“ค์˜ ๋ฌธ์„œ ๊ตฌ์กฐ๋‚˜ ์Šคํƒ€์ผ ๋‚ด์šฉ ๋“ฑ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋•๋Š”๋‹ค.
  • HTML, CSS๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ง์ ‘์ ์œผ๋กœ ๋ณด์ด๋Š” ๊ฒƒ์ด๋ผ๋ฉด DOM์€ ๊ธฐ๊ณ„๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์›น ์‚ฌ์ดํŠธ์˜ ๊ตฌ์กฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ดํ•ดํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ํ‘œ์ค€์ด๋‹ค.
  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ์•„๋‹ˆ์ง€๋งŒ ๋”์ด ์—†๋‹ค๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋Š” ์›น ํŽ˜์ด์ง€๋‚˜ XML ํŽ˜์ด์ง€ ๋ฐ ์š”์†Œ๋“ค๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋ธ์ด๋‚˜ ๊ฐœ๋…๋“ค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ–์ง€ ๋ชป ํ•œ๋‹ค.
  • HTML์˜ ๋ชจ๋“  ์š”์†Œ๋“ค์€ DOM๊ณผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ๊ฐ™์€ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•˜๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ

  • ์ด๋Ÿฐ ๊ฐ„๋‹จํ•œ HTML ํŒŒ์ผ์ด ์žˆ๊ณ  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์—ด์–ด๋ณด๋ฉด
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>DOM</title>
      </head>
      <body>
        <h1 id="title">์•„์ฟ ์•„๋ฆฌ์›€</h1>
        <ul>
          <li>๊ฐ€์˜ค๋ฆฌ</li>
          <li>๋ฌธ์–ด</li>
          <li>๊ฐ€์‹œ๋ณต์–ด</li>
        </ul>
        <button>button</button>
        <script src="./main.js"></script>
      </body>
    </html>
    // browse
    const title = document.getElementById("title");
    title.textContent = 'aquarium";
  • ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ํ†ตํ•ด JS ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ œ๋ชฉ์ด ๋ฐ”๋€Œ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

DOM Tree

  • HTML ์ฝ”๋“œ๋ผ๋Š” ์„ค๊ณ„๋„๋ฅผ ๋ธŒ๋ผ์šฐ์ €๋ผ๋Š” ๊ณต์žฅ์— ๋ณด๋‚ด๋ฉด ์„ค๊ณ„๋„๋ฅผ ํ•ด์„ํ•˜๋Š” ํŒŒ์‹ฑ์ด๋ผ๋Š” ๊ณผ์ •์„ ๊ฑฐ์น˜๊ณ  ๊ฒฐ๊ณผ๋ฌผ๋กœ DOM์ด๋ผ๋Š” ๊ธฐ๊ณ„๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • ์œ„์—์„œ ๋ดค๋˜ HTML ๋ฌธ์„œ๋ฅผ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํŒŒ์‹ฑํ•˜๋ฉด ์œ„์™€ ๋น„์Šทํ•œ ํ˜•ํƒœ๋กœ DOM์ด ๋งŒ๋“ค์–ด์ง€๋Š”๋ฐ ์œ„์˜ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ ํŠธ๋ฆฌ ์ „์ฒด๋ฅผ ๋งํ•œ๋‹ค.
  • ์ด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ถ€ํ’ˆ๋“ค, ๊ฐ๊ฐ์˜ ์š”์†Œ ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ๋…ธ๋“œ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์›น ํŽ˜์ด์ง€์˜ ์š”์†Œ๋“ค์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑด ์ด ๋ชจ๋“  ๋…ธ๋“œ๋“ค์ด ๊ฐ๊ฐ์˜ API์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • API๋Š” ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜์ž๋ฉด ๋„ˆ๊ฐ€ ์ด๋ ‡๊ฒŒ ์ฃผ๋ฌธํ•˜๋ฉด ๋‚ด๊ฐ€ ์š”๋ ‡๊ฒŒ ์ค„๊ป˜๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šธ ๊ฒƒ ๊ฐ™๋‹ค.

DOM Tree ์ƒ์†๋„

  • DOM ํŠธ๋ฆฌ๊ฐ€ ์•„๋‹Œ ๊ฐ ์š”์†Œ๊ฐ€ ์–ด๋–ค ๋ฒ”์ฃผ์— ์†ํ•˜๋Š” ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ ์ƒ์†๋„
  • h1์€ HTMLElement์˜ ํ•œ ์ข…๋ฅ˜์ด๊ณ  HTMLElement๋Š” Element์˜ ํ•œ ์ข…๋ฅ˜, ์ด๋Ÿฐ ์‹์œผ๋กœ ์˜ฌ๋ผ๊ฐ„๋‹ค.
  • ์œ„์˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ ๋ชจ๋‘๊ฐ€ EventTarget ๋ฒ”์ฃผ์— ์†ํ•œ๋‹ค.
  • eventTarget์€ ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ์–ด๋–ค ์ด๋ฒคํŠธ๋“ค์˜ ๋Œ€์ƒ์„ ๋งํ•œ๋‹ค. ex: ํด๋ฆญ์ด๋‚˜ ๋“œ๋ž˜๊ทธ, ํ‚ค๋ณด๋“œ ์ž…๋ ฅ, ์š”์†Œ ๋กœ๋“œ ๋“ฑ
profile
๊ฐ€์˜ค๋ฆฌ์˜ ์ฝ”๋”ฉ์ผ๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€