MDNμμ λ§νλ DOM(Document Object Model)μ μ μλ λ€μκ³Ό κ°λ€.
The Document Object Model (DOM) is a programming interface for HTML.
DOMμ HTML λ¬Έμλ₯Ό μν νλ‘κ·Έλλ° μΈν°νμ΄μ€μ΄λ€.
μ½κ² λ§νλ©΄ μ¬λ¬ μννΈμ¨μ΄ κ°μ κ΅λ₯λ₯Ό κ°λ₯νκ² ν΄μ£Όλ νλ©΄ κ°μ μ‘΄μ¬μ΄λ€.
μμλ₯Ό λ€λ©΄ μ΄ν΄νκΈ°κ° μ½λ€.
TVλ₯Ό λ³΄κ³ μμλ 리λͺ¨μ½μ λ€μν μ’ λ₯μ λ²νΌλ€μ ν΅ν΄ TVμ κ΅λ₯(μ±λ μ΄λ) νλ€. μ΄λ¬ν μν©μμ 리λͺ¨μ½μ λ²νΌλ€μ΄ νλ‘κ·Έλλ° μΈν°νμ΄μ€μ κ°μ μν μ΄κ³ , μ΄λ¬ν μΈν°νμ΄μ€λ₯Ό μ΄μ©νμ¬ TVλ₯Ό 컨νΈλ‘€ ν μ μλ€.
let blueElement = document.querySelector('.blue');
blueElement.style.backgroundColor = 'blue';
μμ κ°μ΄ .blue
λΌλ ν΄λμ€λ₯Ό κ°μ§ μμλ₯Ό μ ννμ¬ ν΄λΉ μμμ μ€νμΌμ μμ νμλ€.
μ¦, DOMμ΄λΌλ νλ‘κ·Έλλ° μΈν°νμ΄μ€λ₯Ό μ¬μ©νμ¬ μλ°μ€ν¬λ¦½νΈκ° HTML λ¬Έμλ₯Ό μ‘°μ νλ κ²μ΄λ€.
μ¬κΈ°μ μ£Όμν΄μΌ ν μ¬νμ μλ°μ€ν¬λ¦½νΈλ‘ νλ©΄μ μμ νλ€κ³ ν΄μ λ΄κ° μμ
νλ HTML λ¬Έμ(ex.index.html
) μμ²΄κ° μμ λλ κ²μ μλλ€.
1. μμ΄λ μ΄λ¦μ μ΄μ©νμ¬ μ ν by.document.getElementById
- document.getElementById
λ₯Ό μ΄μ©νμ¬ μμλ₯Ό μ νν κ²½μ° μ£Όμ΄μ§λ κ°μ νλμ΄λ€.
- tip.μ¬κΈ°μ Idλ νμ΄μ§λΉ 1κ°λ§ μ‘΄μ¬νλ―λ‘ element
// start-button μμ΄λλ₯Ό κ°μ§ μμλ₯Ό μ ννμ¬ `$sb` λ³μμ λμ
const $sb = document.getElementById("start-button");
// special-button μμ΄λλ₯Ό κ°μ§ μμμ ν
μ€νΈ λ³κ²½
$sb.textContent = "Engine Start";
2. ν΄λμ€ μ΄λ¦μ μ΄μ©νμ¬ μ ν by.getElementsByClassName
- getElementsByClassName
μ κ²°κ³Όκ°μ λ°°μ΄κ³Ό μ μ¬ν νν(μ μ¬ λ°°μ΄)μ΄λ€. κ·Έλ κΈ° λλ¬Έμ λλΆλΆμ μν©μμ λ°°μ΄μ index
μμΉλ₯Ό μ¬μ©ν΄μΌ νλ€.
- HTML μμμ ν΄λΉ ν΄λμ€λ₯Ό κ°μ§ μμκ° νλ λΏμ΄λΌλ, getElementsByClassName
μ κ²°κ³Όκ°μ λ°°μ΄κ³Ό μ μ¬ν ννμ΄λ―λ‘ μΈλ±μ€λ₯Ό μ¬μ©νμ¬ μ κ·Όνλ€.
- tip.classλ ννμ΄μ§μ μ¬λ¬κ°κ° μ‘΄μ¬ν μ μμΌλ―λ‘ elements => λ°°μ΄ or μ μ¬ λ°°μ΄
// letItGo ν΄λμ€λ₯Ό κ°μ§ "λͺ¨λ μμλ€"μ μ ννμ¬ `$container` λ³μμ λμ
const $letItGo = document.getElementsByClassName("letItGo");
// HTML μμμ ν΄λΉ ν΄λμ€λ₯Ό κ°μ§ μμκ° λ¨ νλ λΏμ΄λλΌλ,
// getElementsByClassNameμ κ²°κ³Όκ°μ λ°°μ΄κ³Ό μ μ¬ν ννμ΄λ―λ‘ μΈλ±μ€λ‘ μ κ·Όνμ¬ μ¬μ©νλ€.
$letItGo[0].style.backgroundColor = "green";
3. νκ·Έ μ΄λ¦μ μ΄μ©νμ¬ μ ν by.getElementsByTagName
- νΉμ νκ·Έλ₯Ό μ¬μ©ν μμλ€μ μ ν
- getElementsByClassName
κ³Ό getElementsByTagName
λ κ²°κ³Όκ°μ΄ λλΆλΆ λμΌν νν(HTML Elementκ° λ΄κΈ΄ μ μ¬ λ°°μ΄)μ΄λ€.
4. CSSμ νμλ₯Ό μ΄μ©νμ¬ μ ν by.querySelector
- CSS μ νμ λ¬Έλ²μ μ΄μ©ν΄μΌνλ€. (μ€μ μ‘°μ¬!)
- querySelector
λΌλ ν¨μλ λͺ¨λ κ²½μ°μ "νλμ μμ"λ₯Ό λ°ννλ€.
- querySelector
ν¨μμ CSS μ νμμ μΌμΉνλ μμκ° μ¬λ¬ κ°μΌ κ²½μ°, κ°μ₯ 첫λ²μ§Έ μμλ₯Ό λ°ννλ€.
- querySelectorAll
ν¨μμ CSS μ νμμ μΌμΉνλ "λͺ¨λ μμλ€"μ μ μ¬ λ°°μ΄μ ννλ‘ λ°ννλ€.(getElementsByClassName
μ²λΌ μμλ₯Ό μ μ΄νκ³ μΆλ€λ©΄ index
μμΉλ₯Ό μ¬μ©ν΄μΌ νλ€.)
const $container = document.querySelector("#container");
const $listName = document.querySelector(".name");
const $paragraphs = document.querySelectorAll("p");
DOMμ μ΄μ©νλ©΄ μ νν μμλ€μ μμ νκ±°λ μμ ν μ μλ€.
const $article = document.querySelector(".meet");
$article.textContent = "Hello!";
HTMLμμλ₯Ό λͺ¨λλ€ μκΈ°ν λ €κ³ νμ§ λ§κ³ μ νν κ²μμ ν΄μ μ΄μ©νμ!
κ²μμ΄ : μλ°μ€ν¬λ¦½νΈ HTML μμ ν
μ€νΈ μμ
λ±μ ν€μλ
μμ£Ό μ¬μ©νλ μμ±
const secondHead = document.createElement("h2"); // h2 μμλ₯Ό λ§λ€μ΄μ "scondHead"λΌλ λ³μμ ν λΉ
secondHead.textContent = "μμ λͺ©"; // h2 μμ ν
μ€νΈ μ€μ
secondHead.fontSize = "45px"; // h2 μμ μ€νμΌ μ€μ
document.body.appendChild(secondHead); // h2 μμ body νκ·Έμ μμμΌλ‘ μΆκ°
μμ κ³Ό μμ κ° κ°λ₯νλ―, λ§λ€κΈ°λ κ°λ₯νλ€.
"event"λ μΉμμ λ°μνλ μ¬κ±΄λ€μ μΌμ»«λ λ¨μ΄μ΄λ€. ex)νλ©΄ ν΄λ¦, λ§μ°μ€ λλκ·Έ, μλμ° μ¬μ΄μ¦ μ‘°μ ..
μ΄λ²€νΈμ μ’
λ₯λ κ΅μ₯ν λ§λ€. μκΈ°λ³΄λ€ λ§μ΄ μ¬μ©νλ©΄μ μ΅μν΄μ§μ!
<div>
<p>ν΄μ¦λ₯Ό λ€μ νκ³ μΆμΌμλ©΄ μλ λ²νΌμ λλ₯΄μΈμ!</p>
<button>μμ!</button>
</div>
const reStartBtn = document.querySelector("button");
reStartBtm.addEventListener("click", function onButtonClick () {
alert("ν΄μ¦ μμν©λλ€!");
}
λ‘κ·ΈμΈ νμ΄μ§ ꡬνμ νλ€κ° DOMκ³Ό eventκ° λμμΌλ‘λ
μ΄ν΄λ₯Ό νλλ° κ°λ
μ μΌλ‘λ λ루λμ€νμ¬ λΆμ‘±νμ§λ§
볡μ΅μ©μΌλ‘ μ 리λ₯Ό ν΄λ΄€λ€. λκ° μμΌλ‘ 벨λ‘κ·Έ μλμ΄ λ κ²λ§ κ°λ€.π€·
λ¨μν 빨리 μ§λλ₯Ό λκ°λ κ²λ³΄λ€ λ΄κ° μ€λͺ
ν μ μλλ‘ μ΄ν΄λ₯Ό ν΄μΌκ² λ€.