๐Ÿš€ Languege/JavaScript

[๊ธฐ๋ณธ ๋ฌธ๋ฒ•] JavaScript DOM (Document Object Model) #1

mini_world 2021. 4. 15. 19:22
๋ชฉ์ฐจ ์ ‘๊ธฐ

 

DOM ( Document Object Model) ์ด๋ž€?

๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ์ด๋ผ๊ณ  ํ•˜๋ฉฐ HTML XML ๋ฌธ์„œ๋ฅผ Javascript์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก Objectํ™” ํ•ด์ฃผ๋Š” ๊ธฐ์ˆ ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

์›นํŽ˜์ด์ง€๋Š” ํ•˜๋‚˜์˜ ๋ฌธ์„œ(Document)์ž…๋‹ˆ๋‹ค.
์›นํŽ˜์—์ง€์˜ ๊ตฌ์กฐ๋ฅผ Object๋กœ ๋งŒ๋“ค์–ด JavaScript์—์„œ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•˜๊ณ , ์ €์žฅํ•˜๋Š” ๋“ฑ์˜ ์กฐ์ž‘์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.
์ฆ‰, DOM์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด, HTML ์— ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š”๊ฑฐ์ฃ !

์ถœ์ฒ˜ : https://en.wikipedia.org/wiki/Document_Object_Model

์šฐ๋ฆฌ์˜ ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” HTMLํŽ˜์ด์ง€๋ฅผ ์„œ๋ฒ„์—์„œ ๋ฐ›์•„์˜จ ํ›„, HTML์„ ๋กœ๋“œํ• ๋•Œ DOM์„ ํ•จ๊ป˜ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
์ด๋ ‡๊ฒŒ ๋˜๋ฉด, DOM์ด HTML๊ณผ Javascript๊ฐ„์˜ ์ธํ„ฐํŽ˜์ด์Šค (์†Œํ†ต์ฐฝ๊ตฌ) ์—ญํ• ์„ ํ•˜๊ฒŒ ๋˜๋Š”๊ฑฐ์ฃ .

๊ทธ๋ž˜์„œ DOM ๊ธฐ์ˆ ๋กœ ์šฐ๋ฆฌ๋Š” ๋™์  ์›นํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
- HTML ์š”์†Œ ๋ฐ ์†์„ฑ์„ ์ถ”๊ฐ€, ๋ณ€๊ฒฝ, ์ œ๊ฑฐ ๊ฐ€๋Šฅ
- CSS ์Šคํƒ€์ผ ๋ณ€๊ฒฝ
- ์ƒˆ๋กœ์šด ์ด๋ฒคํŠธ ์ƒ์„ฑ, ์ด๋ฒคํŠธ ๋ฐ˜์‘

์•„๋ž˜ ์˜ˆ์ œ๋ฅผ ํ™•์ธํ•ด๋ณผ๊นŒ์š”? (์ฝ”๋“œ ์ถœ์ฒ˜)

<html>
  <head>
    <script> 
       // HTML์ด ๋กœ๋”ฉ๋ ๋•Œ(DOM์ด ์‚ฌ์˜น ๊ฐ€๋Šฅํ• ๋•Œ), windows.onload ํ•จ์ˆ˜์•ผ ์‹œ์ž‘๋˜๋ผ!
       window.onload = function() {

         // ๋ณ€์ˆ˜ ์„ ์–ธ (h1 element ์ƒ์„ฑ, elementdp ํ…์ŠคํŠธ ์ถ”๊ฐ€)
         var heading = document.createElement("h1");
         var heading_text = document.createTextNode("Big Head!");
         
         // ๋ฌธ์„œ ํŠธ๋ฆฌ์— h1์„ ์ถ”๊ฐ€ํ•œ๋‹ค. <h1>bigHead!</h1>๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ ์ถœ๋ ฅ๋œ๋‹ค.
         heading.appendChild(heading_text);
         document.body.appendChild(heading);
      }
    </script>
  </head>
  <body>
  </body>
</html>

์™„์ „ ์‹ ๊ธฐํ•˜์ฃ !
์ด DOM๊ธฐ์ˆ ๋กœ ์šฐ๋ฆฌ๋Š” ์ •๋ง ๋งŽ์€๊ฒƒ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Document์˜ ๊ฐ์ฒด ํ‘œ๊ธฐ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•ด๋ด…๋‹ˆ๋‹ค.

๋จผ์ €, index.html์„ ์ƒ์„ฑํ•˜๊ณ  ์›น๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰์‹œ์ผœ๋ด…๋‹ˆ๋‹ค.
์‹คํ–‰ ๊ฒฐ๊ณผ ํ‰๋ฒ”ํ•œ html ํŽ˜์ด์ง€๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. 

<DOCTYPE html>
  <html>
      <head>
          <title>hello!</title>
      </head>
      <body>
          <H1 id="title">This is Test Page!</H1>
          <p>This is test text!</p>
      </body>
  </html>

 

์ด์ œ DOM์ด ์‹คํ–‰๋˜๊ณ , HTMLํŽ˜์ด์ง€๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ฐ์ฒดํ™” ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด๋ด…๋‹ˆ๋‹ค.
html์— ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

<DOCTYPE html>
  <html>
      <head>
          <title>hello!</title>
      </head>
      <body>
          <H1 id="title">This is Test Page!</H1>
          <p>This is test text!</p>
          <script>
            console.dir(document); // document ์ „์ฒด์˜ ๊ฐ์ฒด ๋ชฉ๋ก์„ ํ™•์ธํ•ด๋ณด์ž
          </script>
      </body>
  </html>

์›น๋ธŒ๋ผ์šฐ์ €์—์„œ ๋„๊ตฌ > Consoleํƒญ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
#document ์•„๋ž˜์˜ ๋ชฉ๋ก์ด ๋ฐ”๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ปจํŠธ๋กค ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค!!

์ด๋ ‡๊ฒŒ ๋‚˜์˜ค๋Š” ๊ฐ์ฒด ๋ชฉ๋ก์„ ๊ฐ€์ง€๊ณ  ์šฐ๋ฆฌ๋Š” HTML์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋จผ์ €, ํƒ€์ดํ‹€์„ ๋ฐ”๊ฟ”๋ณผ๊นŒ์š”?
๊ฐ์ฒด ๋ชฉ๋ก์—์„œ title์„ ํ™•์ธํ• ์ˆ˜ ์žˆ๋„ค์š”!

์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•ด๋ด…๋‹ˆ๋‹ค.

<DOCTYPE html>
  <html>
      <head>
          <title>hello!</title>
      </head>
      <body>
          <H1 id="title">This is Test Page!</H1>
          <p>This is test text!</p>
          <script>
            console.dir(document); // document ์ „์ฒด์˜ ๊ฐ์ฒด ๋ชฉ๋ก์„ ํ™•์ธํ•ด๋ณด์ž
            document.title = "change!" // title ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•ด๋ณด์ž!
          </script>
      </body>
  </html>
  

๊ทธ๋ฆฌ๊ณ  ์›น๋ธŒ๋ผ์šฐ์ €์—์„œ ๋‹ค์‹œํ•œ๋ฒˆ ๋กœ๋”ฉ ํ•ด๋ณด๋ฉด!!

๋„ค~~! ์ด๋ ‡๊ฒŒ title ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋” ํ•™์Šตํ•˜๊ธฐ์œ„ํ•ด์„œ ์•„๋ž˜ Examples ์„ ํ™•์ธํ•˜์„ธ์š” ๐Ÿ‘๐Ÿป

developer.mozilla.org/ko/docs/Web/API/Document_Object_Model/Examples

 

Examples - Web API | MDN

Examples ์ด ์žฅ์—์„œ๋Š” DOM์„ ์‚ฌ์šฉํ•œ ์›น, XML ๊ฐœ๋ฐœ์˜ ๊ธด ์˜ˆ์ œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ๋Š” ๋ฌธ์„œ์˜ object๋ฅผ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€๋Šฅํ•œ JavaScript์˜ ์ผ๋ฐ˜์ ์ธ API, ํŠธ๋ฆญ, ํŒจํ„ด์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.  ์•„๋ž˜์˜ ์˜ˆ์ œ๋Š” ๋‹ค์–‘ํ•œ ๋ฉด

developer.mozilla.org

 

728x90