DOM (Document Object Model)
HTML λ¬Έμλ₯Ό JavaScript κ°μ²΄λ‘ λ€λ£¨λ μΈν°νμ΄μ€
DOMμ HTML λ¬Έμμ κ³μΈ΅μ ꡬ쑰μ μ 보λ₯Ό νννλ©°, μ΄λ₯Ό μ μ΄ν μ μλ νλ‘νΌν°μ λ©μλλ₯Ό μ 곡νλ νΈλ¦¬ μλ£κ΅¬μ‘°μ
λλ€.
DOM μ μ΄μ©ν μμ
JavaScript λ‘ DOM μ μ΄μ©ν΄ ν μ μλ μμ
β’
HTML μμ λ° μμ±μ μΆκ°, λ³κ²½, μ κ±°
β’
HTML μμμ CSS μ€νμΌ μΆκ°, λ³κ²½, μ κ±°
β’
HTML λ¬Έμμ λν μ΄λ²€νΈ μ²λ¦¬
β’
μ
λ ₯ μμμ λν μ ν¨μ± κ²μ¬
λ¬Έμ κ°μ²΄ λͺ¨λΈ ꡬ쑰
DOMμ HTML λ¬Έμλ₯Ό κ³μΈ΅μ μΈ κ΅¬μ‘°μΈ νΈλ¦¬ κ΅¬μ‘°λ‘ λμ΄ μμ΅λλ€.
μ΅μμμ Document λ
Έλκ° μκ³ , κ·Έ μλλ‘ HTML, head, body λ±μ μμ λ
Έλλ€μ΄ κ³μΈ΅μ μΌλ‘ ꡬμ±λ©λλ€. κ° λ
Έλλ λΆλͺ¨-μμ-νμ κ΄κ³λ₯Ό κ°μ§λλ€.
Document
μΉ νμ΄μ§ κ°μ²΄
docuemnt ꡬμ±μμ
β’
DOM μμ± (Property)
β’
DOM λ©μλ (Method)
DOM μμ± (Property)
μμ± | μ€λͺ
|
innerHTML | μμμ HTML λ΄μ©μ κ°μ Έμ€κ±°λ μ€μ |
textContent | μμμ ν
μ€νΈ λ΄μ©μ κ°μ Έμ€κ±°λ μ€μ |
id | μμμ κ³ μ μλ³μ |
style | μμμ μΈλΌμΈ μ€νμΌ μμ± |
className | μμμ ν΄λμ€ μ΄λ¦ |
value | νΌ μμμ κ° |
checked | 체ν¬λ°μ€λ λΌλμ€ λ²νΌμ μ ν μν |
DOM λ©μλ (Method)
λ©μλ | μ€λͺ
|
write() | HTML λ¬Έμμ μΆλ ₯ |
createElement() | μλ‘μ΄ HTML μμ μμ± |
appendChild() | μμλ₯Ό μμ μμλ‘ μΆκ° |
removeChild() | μμ μμ μ κ±° |
setAttribute() | μμμ μμ± μ€μ |
getAttribute() | μμμ μμ± κ° κ°μ Έμ€κΈ° |
addEventListener() | μμμ μ΄λ²€νΈ 리μ€λ μΆκ° |
removeEventListener() | μμμ μ΄λ²€νΈ 리μ€λ μ κ±° |
focus() | μμμ ν¬μ»€μ€ μ€μ |
click() | μμλ₯Ό ν΄λ¦ |
submit() | νΌ μμλ₯Ό μ μΆ |
DOM μμ μ κ·Ό λ°©λ²
β’
μμ μ ν
β’
μμ μ 보
β’
μμ μ€νμΌ λ³κ²½
μμ μ ν
DOM λ©μλλ₯Ό μ¬μ©νμ¬ HTML μμλ₯Ό μ ννλ λ°©λ²
β’
getElement λ₯
β¦
id, class, tag, μμ±μΌλ‘ μμλ₯Ό μ ννλ λ°©λ²
document.getElementXXX()
JavaScript
볡μ¬
β’
querySelector λ₯
β¦
μ νμλ‘ μμλ₯Ό μ ννλ λ°©λ²
document.querySelector()
JavaScript
볡μ¬
λ©μλ | μ€λͺ
| λ°νκ° |
getElementById(μμ΄λ) | ν΄λΉ μμ΄λμ μμλ₯Ό μ νν¨. | Element |
getElementsByTagName(νκ·Έμ΄λ¦) | ν΄λΉ νκ·Έ μ΄λ¦μ μμλ₯Ό λͺ¨λ μ νν¨. | HTMLCollection |
getElementsByClassName(ν΄λμ€μ΄λ¦) | ν΄λΉ ν΄λμ€μ μν μμλ₯Ό λͺ¨λ μ νν¨. | HTMLCollection |
getElementsByName(nameμμ±κ°) | ν΄λΉ name μμ±κ°μ κ°μ§λ μμλ₯Ό λͺ¨λ μ νν¨. | NodeList |
querySelector(μ νμ) | ν΄λΉ μ νμλ‘ λ¨μΌ μμλ₯Ό μ νν¨. | Element |
querySelectorAll(μ νμ) | ν΄λΉ μ νμλ‘ μ§μ κ°λ₯ν λͺ¨λ μμλ₯Ό μ νν¨. | NodeList |
μμ μ 보
Element κ°μ²΄μ μμ±κ³Ό λ©μλλ‘ μμμ μμ±μ λ€λ£¨λ λ°©λ²
μμ±/λ©μλ | μ€λͺ
|
Element.μμ± | μμμ μμ± κ°μ μ§μ μ κ·Όνμ¬ κ°μ Έμ€κΈ° |
Element.μμ± = κ° | μμμ μμ± κ°μ μ§μ μ κ·Όνμ¬ μ§μ νκΈ° |
getAttribute( ) | μμμ μμ± κ°μ λ©μλλ‘ κ°μ Έμ€κΈ° |
setAttribute( ) | μμμ μμ± κ°μ λ©μλλ‘ μ§μ νκΈ° |
μ£Όμ μμ± λ° μμ
μμ±/λ©μλ | μ€λͺ
|
textContent | μμμ ν
μ€νΈ λ΄μ©μ κ°μ Έμ€κΈ° |
textContent = βλ΄μ©β | μμμ ν
μ€νΈ λ΄μ©μ μ§μ νκΈ° |
innerText | μμμ ν
μ€νΈ λ΄μ©μ κ°μ Έμ€κΈ° |
innerText = βλ΄μ©β | μμμ ν
μ€νΈ λ΄μ©μ μ§μ νκΈ° |
innerHTML | μμμ μμμμμ HTML κ°μ Έμ€κΈ° |
innerHTML = β<h1>λ΄μ©</h1>β | μμμ 컨ν
μΈ λ₯Ό HTML λ‘ μ§μ νκΈ° |
μμ μ€νμΌ λ³κ²½
μμλ₯Ό μ ννμ¬ style μμ±μ μ κ·Όνκ³ , CSS μ€νμΌ μμ±κ°μ μ§μ νμ¬ λ³κ²½νλ λ°©λ²
μμ.style.μμ± = "μ€νμΌ μμ±κ°"
JavaScript
볡μ¬
λ¨μΌ μ€νμΌ μμ± λ³κ²½
const box = document.getElementById('box');
box.style.color = 'red';
JavaScript
볡μ¬
μ¬λ¬ μ€νμΌ μμ± λμ λ³κ²½
β’
μμ.style.cssText μμ±μ μ¬μ©
β’
Object.assign() λ©μλ μ¬μ©
const box = document.getElementById('box');
// κ°λ³ μ€νμΌ μμ± μ§μ
box.style.backgroundColor = 'blue';
box.style.width = '200px';
box.style.height = '100px';
box.style.border = '2px solid black';
// cssTextλ₯Ό μ¬μ©ν μ¬λ¬ μ€νμΌ λμ μ§μ
box.style.cssText = 'background-color: blue; width: 200px; height: 100px; border: 2px solid black;';
// Object.assignμ μ¬μ©ν μ¬λ¬ μ€νμΌ λμ μ§μ
Object.assign(box.style, {
backgroundColor: 'blue',
width: '200px',
height: '100px',
border: '2px solid black'
});
JavaScript
볡μ¬
β’
λ¨μΌ μ€νμΌ μμ±
β’
μ¬λ¬ μ€νμΌ μμ±
β¦
cssText
β¦
Object.assign()
style κ°μ²΄μ μμ±μΌλ‘ μ§μ μ§μ νκ±°λ, cssText μμ± λλ Object.assign() λ©μλλ₯Ό μ¬μ©νμ¬ μ¬λ¬ μ€νμΌμ ν λ²μ λ³κ²½ν μ μμ΅λλ€.
κ΅¬λΆ | μΌμ΄μ€ | μμ |
λ°μ΄ν μ¬μ© | μΌλ°₯ μΌμ΄μ€(kebab-case) | "background-color" |
λ°μ΄ν λ―Έμ¬μ© | μΉ΄λ© μΌμ΄μ€(camelCase) | backgroundColor |
μ΄λ²€νΈ
μ¬μ©μ λμμ΄λ μμ€ν
λ³νλ₯Ό κ°μ§νλ μ νΈμ
λλ€.
μ΄λ²€νΈ | μ€λͺ
|
DOMContentLoaded | HTML λ¬Έμμ DOM νΈλ¦¬κ° μμ±λλ©΄ λ°μ (λ¬Έμ μ€λΉ μ΄λ²€νΈ) |
click | λ§μ°μ€ ν΄λ¦ μ λ°μ |
change | μμμ κ°μ΄ λ³κ²½λ λ λ°μ |
keyup | ν€λ₯Ό λλ₯Ό λ λ°μ |
submit | νΌ μ μΆ μ λ°μ |
scroll | νμ΄μ§λ μμκ° μ€ν¬λ‘€λ λ λ°μ |
DOM λ Έλ
μμμ μ 보λ₯Ό μ μ₯νκ³ μλ κ³μΈ΅μ λ¨μ
DOM λ
Έλλ HTML λ¬Έμλ₯Ό ꡬμ±νλ κΈ°λ³Έ λ¨μλ‘, λ¬Έμμ λͺ¨λ μμ, μμ±, ν
μ€νΈλ₯Ό λνλ΄λ κ°μ²΄μ
λλ€.
λ
Έλ | μ€λͺ
|
λ¬Έμ λ
Έλ | HTML λ¬Έμ μ 체λ₯Ό λνλ΄λ λ
Έλ |
μμ λ
Έλ | λͺ¨λ HTML μμλ μμ λ
Έλμ΄λ©°, μμ± λ
Έλλ₯Ό κ°μ§ μ μλ μ μΌν λ
Έλ |
μμ± λ
Έλ | λͺ¨λ HTML μμμ μμ±μΒ μμ± λ
Έλμ΄λ©°, μμ λ
Έλμ κ΄ν μ 보λ₯Ό κ°μ§κ³ μμ.
νμ§λ§ ν΄λΉ μμ λ
Έλμ μμ λ
Έλ(child node)μλ ν¬ν¨λμ§ μμ. |
ν
μ€νΈ λ
Έλ | HTML λ¬Έμμ λͺ¨λ ν
μ€νΈλ ν
μ€νΈ λ
Έλ |
μ£Όμ λ
Έλ | HTML λ¬Έμμ λͺ¨λ μ£Όμμ μ£Όμ λ
Έλ |
λ Έλ κ°μ κ΄κ³
DOMμ λ
Έλ κ°μ κ³μΈ΅μ κ΄κ³λ₯Ό κ°μ§λ©°, λΆλͺ¨-μμ-νμ κ΄κ³λ‘ ꡬμ±λ©λλ€.
λ Έλ κ΄κ³ μμ±
λ
Έλ | μ€λͺ
|
λ£¨νΈ λ
Έλ | κ°μ μμμ μλ λ¨ νλμ λ
Έλ (<html>) |
λΆλͺ¨ λ
Έλ | λ°λ‘ μμμ μλ λ¨ νλμ λ
Έλ |
μμ λ
Έλ | λ°λ‘ νμμ μλ λ
Έλ |
νμ λ
Έλ | κ°μ λΆλͺ¨ λ
Έλλ₯Ό κ°λ λ
Έλ |
μ‘°μ λ
Έλ | νμ¬ λ
Έλλ³΄λ€ μμμ μ‘΄μ¬νλ λͺ¨λ λ
Έλ |
μμ λ
Έλ | νμ¬ λ
Έλλ³΄λ€ νμμ μ‘΄μ¬νλ λͺ¨λ λ
Έλ |
λ Έλ μ κ·Ό μμ±
μμ± | μ€λͺ
|
parentNode | λΆλͺ¨ λ
Έλ |
childNodes | λͺ¨λ μμ λ
Έλ(NodeList) |
firstChild | 첫 λ²μ§Έ μμ λ
Έλ |
lastChild | λ§μ§λ§ μμ λ
Έλ |
nextSibling | λ€μ νμ λ
Έλ |
previousSibling | μ΄μ νμ λ
Έλ |
parentElement | λΆλͺ¨ μμ(Element) |
children | μμ μμλ€ |
firstElementChild | 첫 λ²μ§Έ μμ μμ |
lastElementChild | λ§μ§λ§ μμ μμ |
nextElementSibling | λ€μ νμ μμ |
previousElementSibling | μ΄μ νμ μμ |
DOM λ Έλ λ©μλ
β’
λ
Έλ μΆκ°
β’
λ
Έλ μμ±
β’
λ
Έλ μ κ±°
β’
λ
Έλ 볡μ
β’
λ
Έλ μ‘°μ
λ Έλ μΆκ°
μμ±/λ©μλ | μ€λͺ
|
appendChild(μΆκ°λ
Έλ) | ν΄λΉ λ
Έλμ μμ λ
Έλ 리μ€νΈ 맨 λ§μ§λ§μ μΆκ° |
insertBefore(μΆκ°λ
Έλ, κΈ°μ€λ
Έλ) | μΆκ°ν λ
Έλλ₯Ό νΉμ μμ λ
Έλ μμ μΆκ° |
insertData(μΈλ±μ€, λ°μ΄ν°) | ν
μ€νΈ λ
Έλμ νΉμ μΈλ±μ€λΆν° λ°μ΄ν°λ₯Ό μΆκ° |
λ Έλ μμ±
μμ±/λ©μλ | μ€λͺ
|
createElement(μμ) | μλ‘μ΄ HTML μμ λ
Έλλ₯Ό μμ± |
createAttribute(μμ±) | μλ‘μ΄ μμ± λ
Έλλ₯Ό μμ± |
createTextNode(ν
μ€νΈ) | μλ‘μ΄ ν
μ€νΈ λ
Έλλ₯Ό μμ± |
λ Έλ μ κ±°
μμ±/λ©μλ | μ€λͺ
|
removeChild(μμ) | μμ λ
Έλ 리μ€νΈμμ νΉμ μμ λ
Έλλ₯Ό μ κ±° |
removeAttribute(μμ±) | νΉμ μμ± λ
Έλλ₯Ό μ κ±° |
λ Έλ 볡μ
μμ±/λ©μλ | μ€λͺ
|
cloneNode(μμ λ
Έλ 볡μ μ¬λΆ) | κΈ°μ‘΄ λ
Έλλ₯Ό 볡μ νμ¬ μ λ
Έλλ‘ μμ±
μμ λ
Έλ 볡μ μ¬λΆ : true (볡μ O), false (볡μ X) |
λ Έλ μ‘°μ
μμ±/λ©μλ | μ€λͺ
|
nodeValue | νΉμ λ
Έλμ κ°μ λ³κ²½ |
replaceChild(μ λ
Έλ, κΈ°μ‘΄ λ
Έλ) | κΈ°μ‘΄ λ
Έλλ₯Ό μ λ
Έλλ₯Ό λ³κ²½ |
replaceData(μ€νμ
, λ¬Έμ μ, λ°μ΄ν°) | μ€νμ
μμΉλΆν° κ΅μ²΄ν λ¬Έμ κ°μλ§νΌ λ°μ΄ν°λ‘ λ³κ²½ |
νμ΅ μμ
β’
λ¬Έμ κ°μ²΄ μ‘°μνκΈ°
β’
λ¬Έμ κ°μ²΄ μμ±νκΈ°
β’
λ¬Έμ κ°μ²΄ μ΄λ²€νΈ μΆκ°νκΈ°
β’
λ¬Έμ κ°μ²΄ μ κ±°νκΈ°
λ¬Έμ κ°μ²΄ μ‘°μνκΈ°
DOM μμμ λ΄μ©μ΄λ μμ±μ λ³κ²½νλ μμ
μ
λλ€.
// λ΄μ© λ³κ²½
element.textContent = 'μλ‘μ΄ ν
μ€νΈ';
element.innerHTML = '<span>HTML ν¬ν¨</span>';
// μ€νμΌ λ³κ²½
element.style.backgroundColor = 'blue';
element.style.fontSize = '20px';
// ν΄λμ€ μ‘°μ
element.classList.add('active');
element.classList.remove('inactive');
JavaScript
볡μ¬
λ¬Έμ κ°μ²΄ μμ±νκΈ°
μλ‘μ΄ DOM μμλ₯Ό μμ±νκ³ λ¬Έμμ μΆκ°νλ μμ
μ
λλ€.
// μ μμ μμ±
const div = document.createElement('div');
div.textContent = 'μλ‘μ΄ div μμ';
// λ¬Έμμ μΆκ°
document.body.appendChild(div);
// νΉμ μμΉμ μ½μ
parentElement.insertBefore(div, referenceElement);
JavaScript
볡μ¬
λ¬Έμ κ°μ²΄ μ΄λ²€νΈ μΆκ°νκΈ°
DOM μμμ μ΄λ²€νΈ 리μ€λλ₯Ό μΆκ°νμ¬ μ¬μ©μ μνΈμμ©μ μ²λ¦¬ν©λλ€.
// μ΄λ²€νΈ 리μ€λ μΆκ°
element.addEventListener('click', function(event) {
console.log('ν΄λ¦λ¨!');
});
// μ΄λ²€νΈ κ°μ²΄ νμ©
input.addEventListener('keyup', function(event) {
if (event.key === 'Enter') {
console.log('μν°ν€ μ
λ ₯!');
}
});
JavaScript
볡μ¬
λ¬Έμ κ°μ²΄ μ κ±°νκΈ°
DOMμμ μμλ₯Ό μ κ±°νλ μμ
μ
λλ€.
// μμ μ§μ μ κ±°
element.remove();
// λΆλͺ¨ λ
Έλλ₯Ό ν΅ν μ κ±°
parentElement.removeChild(childElement);
// λͺ¨λ μμ μμ μ κ±°
while (element.firstChild) {
element.removeChild(element.firstChild);
}
JavaScript
볡μ¬