๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โญ Personal_Study/Javascript

JavaScript๋ฅผ ํ™œ์šฉํ•œ DOM ์กฐ์ž‘ ๊ธฐ์ดˆ

by ํฌ์ŠคํŠธ์‰์ดํฌ 2022. 11. 2.

DOM ์กฐ์ž‘

๊ฐœ์š”

โœ” DOM ์กฐ์ž‘ ์ˆœ์„œ

  1. ์„ ํƒ(select)
  2. ์กฐ์ž‘(maipulation)

์„ ํƒ ๊ด€๋ จ ๋ฉ”์„œ๋“œ

  1. document.querySelector(selector)
    โœ” ์ œ๊ณตํ•œ ์„ ํƒ์ž์™€ ์ผ์น˜ํ•˜๋Š” element ํ•œ ๊ฐœ ์„ ํƒ
    โœ” ์ œ๊ณตํ•œ CSS selector๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ element ๊ฐ์ฒด ๋ฐ˜ํ™˜(์—†๋‹ค๋ฉด null ๋ฐ˜ํ™˜)
  2. document.querySelectorAll(selector)
    โœ” ์ œ๊ณตํ•œ ์„ ํƒ์ž์™€ ์ผ์น˜ํ•˜๋Š” ์—ฌ๋Ÿฌ element๋ฅผ ์„ ํƒ
    โœ” ๋งค์นญํ•  ํ•˜๋‚˜ ์ด์ƒ์˜ ์…€๋ ‰ํ„ฐ๋ฅผ ํฌํ•จํ•˜๋Š” ์œ ํšจํ•œ CSS selector๋ฅผ ์ธ์ž๋กœ ๋ฐ›๋Š”๋‹ค.
    โœ” ์ œ๊ณตํ•œ CSS selector๋ฅผ ๋งŒ์กฑํ•˜๋Š” NodeList ๋ฐ˜ํ™˜

์„ ํƒ ๊ด€๋ จ ๋ฉ”์„œ๋“œ ์‹ค์Šต

   <script>
     console.log(document.querySelector("#title"));
     console.log(document.querySelectorAll(".text"));

     console.log(document.querySelector(".text"));
     console.log(document.querySelectorAll("body > ul > li"));

     liTags = document.querySelectorAll("body > ul > li");
     liTags.forEach((element) => {
       console.log(element);
     });
   </script>
image

NodeList

โœ” index๋กœ๋งŒ ๊ฐ ํ•ญ๋ชฉ์— ์ ‘๊ทผ ๊ฐ€๋Šฅ
โœ” ๋ฐฐ์—ด์˜ forEach ๋ฉ”์„œ๋“œ ๋ฐ ๋‹ค์–‘ํ•œ ๋ฐฐ์—ด ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
โœ” querySelectorAll()์— ์˜ํ•ด ๋ฐ˜ํ™˜๋˜๋Š” NodeList๋Š” DOM์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ˜์˜ํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. (๊ธฐ๋ณธ์ ์œผ๋กœ ๋™์ ์ด์ง€๋งŒ querySelectorAll()์— ์˜ํ•ด ๋ฐ˜ํ™˜๋  ๋•Œ๋Š” ์ •์ !)

์กฐ์ž‘ ๊ด€๋ จ ๋ฉ”์„œ๋“œ

์ƒ์„ฑ: document.createElement(tagName)

โœ” ์ž‘์„ฑํ•œ tagName์˜ HTML ์š”์†Œ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜ํ™˜

์ž…๋ ฅ: Node.innerText

โœ” Node ๊ฐ์ฒด์™€ ๊ทธ ์ž์†์˜ ํ…์ŠคํŠธ ์ปจํ…์ธ (DOMstring)์„ ํ‘œํ˜„

์ถ”๊ฐ€: Node.appendChild()

โœ” ํ•œ Node๋ฅผ ํŠน์ • ๋ถ€๋ชจ Node์˜ ์ž์‹ NodeList์ค‘ ๋งˆ์ง€๋ง‰ ์ž์‹์œผ๋กœ ์‚ฝ์ž…
โœ” ํ•œ๋ฒˆ์— ์˜ค์ง ํ•˜๋‚˜์˜ Node๋งŒ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ
โœ” ์ถ”๊ฐ€ํ•œ Node ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜
โœ” ๋งŒ์•ฝ ์ฃผ์–ด์ง„ Node๊ฐ€ ์ด๋ฏธ ๋ฌธ์„œ์— ์กด์žฌํ•˜๋Š” ๋‹ค๋ฅธ Node๋ฅผ ์ฐธ์กฐํ•œ๋‹ค๋ฉด ํ˜„์žฌ ์œ„์น˜์—์„œ ์ƒˆ๋กœ์šด ์œ„์น˜๋กœ ์ด๋™

์‚ญ์ œ: Noede.removeChild()

โœ” DOM ์—์„œ ๋…ธ๋“œ ์ œ๊ฑฐ

์กฐ์ž‘ ๊ด€๋ จ ๋ฉ”์„œ๋“œ ์‹ค์Šต

  <script>
    // ํƒœ๊ทธ ์ƒ์„ฑ
    const h1Tag = document.createElement('h1')

    // ํƒœ๊ทธ์•ˆ์— ์ปจํ…์ธ ๋ฅผ ์ž‘์„ฑํ•˜๊ณ 
    h1Tag.innerText = 'DOM ์กฐ์ž‘'

    // ๋ถ€๋ชจ div ํƒœ๊ทธ๋ฅผ ๊ฐ€์ ธ์™€์„œ
    const div = document.querySelector('div')

    // div ํƒœ๊ทธ์˜ ์ž์‹ ์š”์†Œ๋กœ ์ถ”๊ฐ€
    div.appendChild(h1Tag)

    // div์˜ h1 ์š”์†Œ ์‚ญ์ œ
    div.removeChild(h1Tag)
  </script>
  <script>
    // a ํƒœ๊ทธ ์ƒ์„ฑ
    const aTag = document.createElement('a')

    // a ํƒœ๊ทธ ์†์„ฑ ์ถ”๊ฐ€
    aTag.setAttribute('href', 'https://google.com')

    // a ํƒœ๊ทธ ์ปจํ…์ธ  ์ถ”๊ฐ€
    aTag.innerText = '๊ตฌ๊ธ€'

    // div ํƒœ๊ทธ ์„ ํƒ ํ›„ ์ž์‹ ํƒœ๊ทธ๋กœ a ํƒœ๊ทธ ์ถ”๊ฐ€
    const divTag = document.querySelector('div')
    divTag.appendChild(aTag)

    // hi ํƒœ๊ทธ ์„ ํƒ ํ›„ ํด๋ž˜์Šค ๊ฐ’ ์กฐ์ •
    const h1Tag = document.querySelector('h1')
    h1Tag.classList.toggle('blue')
  </script>

์กฐ์ž‘๊ด€๋ จ ๋ฉ”์„œ๋“œ(์†์„ฑ ์กฐํšŒ ๋ฐ ์„ค์ •)

โœ” Element.getAttribute(attributeName)

  • ํ•ด๋‹น ์š”์†Œ์˜ ์ง€์ •๋œ ๊ฐ’(๋ฌธ์ž์—ด)์„ ๋ฐ˜ํ™˜
  • ์ธ์ž(attributeName)๋Š” ๊ฐ’์„ ์–ป๊ณ ์ž ํ•˜๋Š” ์†์„ฑ์˜ ์ด๋ฆ„

โœ” Element.setAttribute(name, value)

  • ์ง€์ •๋œ ์š”์†Œ์˜ ๊ฐ’์„ ์„ค์ •
  • ์†์„ฑ์ด ์ด๋ฏธ ์กด์žฌํ•˜๋ฉด ๊ฐ’์„ ๊ฐฑ์‹ , ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ์ด๋ฆ„๊ณผ ๊ฐ’์„ ์ƒˆ ์†์„ฑ์„ ์ถ”๊ฐ€

์†์„ฑ ์กฐํšŒ ๋ฐ ์„ค์ • ์‹ค์Šต

imageimage

'โญ Personal_Study > Javascript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๋™๊ธฐ์™€ ๋น„๋™๊ธฐ  (0) 2022.11.04
Callback & Promise  (0) 2022.11.04
JavaScript์—์„œ์˜ This  (0) 2022.11.03
Event  (0) 2022.11.02
DOM (Document Object Model)  (0) 2022.11.01

๋Œ“๊ธ€