πŸ“š [JavaScript] DOM

이가은·2022λ…„ 4μ›” 10일
2

JavaScript

λͺ©λ‘ 보기
10/13

πŸ“• DOM

document object model(λ¬Έμ„œ 객체 λͺ¨λΈ)

μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό μ΄μš©ν•˜μ—¬ μ›Ή λ¬Έμ„œμ— μ ‘κ·Όν•˜κ³  μ œμ–΄ν•  수 μžˆλ„λ‘ 객체λ₯Ό μ‚¬μš©ν•΄ μ›Ή λ¬Έμ„œλ₯Ό μ²΄κ³„μ μœΌλ‘œ μ •λ¦¬ν•˜λŠ” 방법

βœ” DOM은 μ›Ή λ¬Έμ„œμ™€ κ·Έ μ•ˆμ˜ λͺ¨λ“  μš”μ†Œλ₯Ό 객체둜 μΈμ‹ν•˜κ³  μ²˜λ¦¬ν•œλ‹€

πŸ“™ DOM 트리

  • λ¬Έμ„œ λ…Έλ“œ(document node) : HTML λ¬Έμ„œ 전체λ₯Ό λ‚˜νƒ€λ‚΄λŠ” λ…Έλ“œ
  • μš”μ†Œ λ…Έλ“œ(element node) : λͺ¨λ“  HTML μš”μ†Œ, 속성 λ…Έλ“œλ₯Ό κ°€μ§ˆ 수 μžˆλŠ” μœ μΌν•œ λ…Έλ“œ
  • ν…μŠ€νŠΈ λ…Έλ“œ(text node) : HTML λ¬Έμ„œμ˜ λͺ¨λ“  ν…μŠ€νŠΈ
  • 속성 λ…Έλ“œ(attribute node) : λͺ¨λ“  HTML μš”μ†Œμ˜ 속성, μš”μ†Œ λ…Έλ“œμ— κ΄€ν•œ 정보λ₯Ό 가지고 μžˆλ‹€
  • 주석 λ…Έλ“œ(comment node) : HTML λ¬Έμ„œμ˜ λͺ¨λ“  주석

πŸ“’ 탐색

1. document.getElementById()

νŠΉμ •ν•œ idκ°€ ν¬ν•¨λœ DOM μš”μ†Œμ— μ ‘κ·Όν•œλ‹€

document.getElementByID("id이름")
var selectedItem = document.getElementById("even");
-> 아이디가 "even"인 μš”μ†Œλ₯Ό 선택

βœ” HTML νƒœκ·Έμ˜ id 속성은 HTML μš”μ†Œ μ•ˆμ—μ„œ μ€‘λ³΅λ˜μ§€ μ•Šλ„λ‘ μ‚¬μš©ν•˜λŠ” CSS μ„ νƒμžμ΄λ‹€

2. document.getElementsByName()

μ§€μ •ν•œ name 속성값을 가진 μš”μ†Œμ— μ ‘κ·Όν•œλ‹€

document.getElementsByName("name 속성값")
var selectedItem = document.getElementsByName("first");
-> name 속성값이 "first"인 λͺ¨λ“  μš”μ†Œλ₯Ό 선택

3. document.getElementsByTagName()

μ§€μ •ν•œ νƒœκ·Έλͺ…을 μ‚¬μš©ν•œ DOM μš”μ†Œμ— μ ‘κ·Όν•œλ‹€

document.getElementsByTagName("νƒœκ·Έμ΄λ¦„")
var selectedItem = document.getElementsByTagName("li");
-> λͺ¨λ“  <li> μš”μ†Œλ₯Ό 선택

βœ” classλ‚˜ idλ₯Ό μ§€μ •ν•˜μ§€ μ•Šμ€ DOM μš”μ†Œμ— μ ‘κ·Όν•˜λ €λ©΄ νƒœκ·Έλ₯Ό μ΄μš©ν•œλ‹€
βœ” μ›Ή λ¬Έμ„œ μ•ˆμ—μ„œ 같은 νƒœκ·Έλ₯Ό μ‚¬μš©ν•˜λŠ” μš”μ†Œκ°€ 2개 이상일 수 μžˆμœΌλ―€λ‘œ λ©”μ†Œλ“œκ°€ λ°˜ν™˜ν•˜λŠ” 값도 HTMLCollection ν˜•νƒœλ‘œ μ €μž₯λœλ‹€

4. document.getElementsByClassName()

μ§€μ •ν•œ class μ„ νƒμž 이름이 λ“€μ–΄μžˆλŠ” DOM μš”μ†Œμ— μ ‘κ·Όν•œλ‹€

document.getElementsByClassName("class이름")
var selectedItem = document.getElementsByClassName("odd");
-> ν΄λž˜μŠ€κ°€ "odd"인 λͺ¨λ“  μš”μ†Œλ₯Ό 선택

βœ” class μ„ νƒμžλŠ” μ›Ή λ¬Έμ„œ μ•ˆμ—μ„œ μ—¬λŸ¬ μš”μ†Œμ—μ„œ μ‚¬μš©ν•  수 μžˆμœΌλ―€λ‘œ λ°˜ν™˜ν•˜λŠ” μš”μ†Œκ°€ 2개 이상일 수 μžˆλ‹€
βœ” λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ 클래슀 이름이 같은 DOM μš”μ†Œλ“€μ΄ HTMLCollection 객체둜 μ €μž₯λœλ‹€

5. document.querySelector()

DOM 트리의 ν…μŠ€νŠΈ, 속성 λ…Έλ“œκΉŒμ§€ 자유둭게 μ œμ–΄ν•΄μ•Ό ν•  λ•Œ μ‚¬μš©ν•œλ‹€

document.querySelector(μ„ νƒμž)
var selectedItem = document.querySelectorAll("li.odd");
-> ν΄λž˜μŠ€κ°€ "odd"인 μš”μ†Œ μ€‘μ—μ„œ <li> μš”μ†Œλ§Œμ„ 선택

βœ” λ°˜ν™˜κ°’μ΄ ν•˜λ‚˜λΌλ©΄ querySelector() λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜κ³ , λ°˜ν™˜κ°’μ΄ μ—¬λŸ¬κ°œλΌλ©΄ querySelectorAll() λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•œλ‹€
βœ” μ„ νƒμžλ₯Ό ν‘œμ‹œν•  λ•Œ id 이름 μ•žμ—λŠ” ν•΄μ‹œ 기호(#)λ₯Ό 뢙이고, class 이름 μ•žμ—λŠ” λ§ˆμΉ¨ν‘œ(.)λ₯Ό 뢙인닀

πŸ“— 생성

1. document.createElement

μƒˆλ‘œμš΄ μš”μ†Œ λ…Έλ“œλ₯Ό λ§Œλ“ λ‹€

document.createElement(HTMLμš”μ†Œ)
var newNode = document.createElement("p");
-> μƒˆλ‘œμš΄ <p> μš”μ†Œλ₯Ό 생성

2. document.createTextNode

μƒˆλ‘œμš΄ ν…μŠ€νŠΈ λ…Έλ“œλ₯Ό λ§Œλ“ λ‹€

document.createTextNode("ν…μŠ€νŠΈ");
var newText = document.createTextNode("μƒˆλ‘œμš΄ ν…μŠ€νŠΈ");
-> μƒˆλ‘œμš΄ ν…μŠ€νŠΈ λ…Έλ“œλ₯Ό 생성

πŸ“˜ μ œμ–΄

1. element.appendChild

μƒˆλ‘œμš΄ λ…Έλ“œλ₯Ό ν•΄λ‹Ή λ…Έλ“œμ˜ μžμ‹ λ…Έλ“œ 리슀트(child node list)의 맨 λ§ˆμ§€λ§‰μ— μΆ”κ°€ν•œλ‹€

element.appendChild(aChild);
var p = document.createElement("p");
document.body.appendChild(p);
-> μƒˆλ‘œμš΄ 단락 μš”μ†Œλ₯Ό μƒμ„±ν•˜κ³  λ¬Έμ„œμ— μžˆλŠ” λ°”λ”” μš”μ†Œμ˜ 끝에 λΆ™μž…λ‹ˆλ‹€.

2. element.setAttribute

속성값을 νŠΉμ •ν•œ κ°’μœΌλ‘œ μ§€μ •ν•œλ‹€
λ§Œμ•½ 속성값을 λ³€κ²½ν•˜λ €λŠ” 속성이 μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©΄ λ¨Όμ € ν•΄λ‹Ή 속성을 μƒμ„±ν•œ 후에 속성값을 μ„€μ •ν•œλ‹€

setAttribute(속성, κ°’)
document.getElementsByTagName("p")[0].setAttribute("class", "para");
-> λͺ¨λ“  <p> μš”μ†Œμ€‘μ—μ„œ 첫 번째 μš”μ†Œμ— 클래슀 μ†μ„±κ°’μœΌλ‘œ "para"λ₯Ό μ„€μ •

3. element.getAttribute

ν•΄λ‹Ή μš”μ†Œμ— μ§€μ •λœ 값을 λ°˜ν™˜ν•œλ‹€

getAttribute(속성)
document.getElementById("div").getAttribute("align");
-> idκ°€ "div"인 μš”μ†Œμ˜ align 값을 λ°˜ν™˜

4. element.innerHTML

μš”μ†Œ 내에 포함 된 HTML λ˜λŠ” XML λ§ˆν¬μ—…μ„ κ°€μ Έμ˜€κ±°λ‚˜ μ„€μ •ν•œλ‹€

const content = element.innerHTML;
element.innerHTML = htmlString;
profile
κ°€λΏ‘μ΄μ˜ 곡뢀 μƒμžπŸ“¦

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보