Search
Duplicate

DOM

DOM (Document Object Model)

HTML ๋ฌธ์„œ๋ฅผ JavaScript ๊ฐ์ฒด๋กœ ๋‹ค๋ฃจ๋Š” ์ธํ„ฐํŽ˜์ด์Šค
โ€œJavaScript ๋กœ HTML ์„ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์—ฐ๊ฒฐ ๋„๊ตฌโ€œ
์›น ํŽ˜์ด์ง€ ๋กœ๋“œ โ†’ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ DOM ์ƒ์„ฑ
์š”์†Œ์˜ ๋ชฉ์ ๊ณผ ํŠน์ง•์„ ์ •์˜ํ•˜๊ณ , ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณต
DOM์€ HTML ๋ฌธ์„œ์˜ ๊ณ„์ธต์  ๊ตฌ์กฐ์™€ ์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•˜๋ฉฐ, ์ด๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

DOM ์„ ์ด์šฉํ•œ ์ž‘์—…

JavaScript ๋กœ DOM ์„ ์ด์šฉํ•ด ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…
โ€ข
HTML ์š”์†Œ ๋ฐ ์†์„ฑ์„ ์ถ”๊ฐ€, ๋ณ€๊ฒฝ, ์ œ๊ฑฐ
โ€ข
HTML ์š”์†Œ์˜ CSS ์Šคํƒ€์ผ ์ถ”๊ฐ€, ๋ณ€๊ฒฝ, ์ œ๊ฑฐ
โ€ข
HTML ๋ฌธ์„œ์— ๋Œ€ํ•œ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
โ€ข
์ž…๋ ฅ ์–‘์‹์— ๋Œ€ํ•œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ

๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ ๊ตฌ์กฐ

DOM์€ HTML ๋ฌธ์„œ๋ฅผ ๊ณ„์ธต์ ์ธ ๊ตฌ์กฐ์ธ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
์ตœ์ƒ์œ„์— Document ๋…ธ๋“œ๊ฐ€ ์žˆ๊ณ , ๊ทธ ์•„๋ž˜๋กœ HTML, head, body ๋“ฑ์˜ ์š”์†Œ ๋…ธ๋“œ๋“ค์ด ๊ณ„์ธต์ ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ๋…ธ๋“œ๋Š” ๋ถ€๋ชจ-์ž์‹-ํ˜•์ œ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

Document

์›น ํŽ˜์ด์ง€ ๊ฐ์ฒด
HTML ์š”์†Œ์— ์ ‘๊ทผ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด

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
๋ณต์‚ฌ
DOM ์„ ํ†ตํ•œ CSS ์Šคํƒ€์ผ ์ง€์ •๋ฐฉ๋ฒ•
โ€ข
๋‹จ์ผ ์Šคํƒ€์ผ ์†์„ฑ
โ€ข
์—ฌ๋Ÿฌ ์Šคํƒ€์ผ ์†์„ฑ
โ—ฆ
cssText
โ—ฆ
Object.assign()
style ๊ฐ์ฒด์˜ ์†์„ฑ์œผ๋กœ ์ง์ ‘ ์ง€์ •ํ•˜๊ฑฐ๋‚˜, cssText ์†์„ฑ ๋˜๋Š” Object.assign() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์Šคํƒ€์ผ์„ ํ•œ ๋ฒˆ์— ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฐ์ฒด ํ˜•ํƒœ๋กœ ์Šคํƒ€์ผ ์†์„ฑ ์ž‘์„ฑ ์‹œ ์œ ์˜์‚ฌํ•ญ
๊ตฌ๋ถ„
์ผ€์ด์Šค
์˜ˆ์‹œ
๋”ฐ์˜ดํ‘œ ์‚ฌ์šฉ
์ผ€๋ฐฅ ์ผ€์ด์Šค(kebab-case)
"background-color"
๋”ฐ์˜ดํ‘œ ๋ฏธ์‚ฌ์šฉ
์นด๋ฉœ ์ผ€์ด์Šค(camelCase)
backgroundColor

์ด๋ฒคํŠธ

์‚ฌ์šฉ์ž ๋™์ž‘์ด๋‚˜ ์‹œ์Šคํ…œ ๋ณ€ํ™”๋ฅผ ๊ฐ์ง€ํ•˜๋Š” ์‹ ํ˜ธ์ž…๋‹ˆ๋‹ค.
JavaScript ๋กœ ์ด๋Ÿฌํ•œ ์ด๋ฒคํŠธ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜์—ฌ ๋™์ ์ธ ์›น ํŽ˜์ด์ง€๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
์ด๋ฒคํŠธ
์„ค๋ช…
DOMContentLoaded
HTML ๋ฌธ์„œ์˜ DOM ํŠธ๋ฆฌ๊ฐ€ ์™„์„ฑ๋˜๋ฉด ๋ฐœ์ƒ (๋ฌธ์„œ ์ค€๋น„ ์ด๋ฒคํŠธ)
click
๋งˆ์šฐ์Šค ํด๋ฆญ ์‹œ ๋ฐœ์ƒ
change
์š”์†Œ์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ๋•Œ ๋ฐœ์ƒ
keyup
ํ‚ค๋ฅผ ๋ˆ„๋ฅผ ๋•Œ ๋ฐœ์ƒ
submit
ํผ ์ œ์ถœ ์‹œ ๋ฐœ์ƒ
scroll
ํŽ˜์ด์ง€๋‚˜ ์š”์†Œ๊ฐ€ ์Šคํฌ๋กค๋  ๋•Œ ๋ฐœ์ƒ

DOM ๋…ธ๋“œ

์š”์†Œ์˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ณ„์ธต์  ๋‹จ์œ„
DOM ๋…ธ๋“œ๋Š” HTML ๋ฌธ์„œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ๋ณธ ๋‹จ์œ„๋กœ, ๋ฌธ์„œ์˜ ๋ชจ๋“  ์š”์†Œ, ์†์„ฑ, ํ…์ŠคํŠธ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.
๋…ธ๋“œ
์„ค๋ช…
๋ฌธ์„œ ๋…ธ๋“œ
HTML ๋ฌธ์„œ ์ „์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋…ธ๋“œ
์š”์†Œ ๋…ธ๋“œ
๋ชจ๋“  HTML ์š”์†Œ๋Š” ์š”์†Œ ๋…ธ๋“œ์ด๋ฉฐ, ์†์„ฑ ๋…ธ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋…ธ๋“œ
์†์„ฑ ๋…ธ๋“œ
๋ชจ๋“  HTML ์š”์†Œ์˜ ์†์„ฑ์€ย ์†์„ฑ ๋…ธ๋“œ์ด๋ฉฐ, ์š”์†Œ ๋…ธ๋“œ์— ๊ด€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ. ํ•˜์ง€๋งŒ ํ•ด๋‹น ์š”์†Œ ๋…ธ๋“œ์˜ ์ž์‹ ๋…ธ๋“œ(child node)์—๋Š” ํฌํ•จ๋˜์ง€ ์•Š์Œ.
ํ…์ŠคํŠธ ๋…ธ๋“œ
HTML ๋ฌธ์„œ์˜ ๋ชจ๋“  ํ…์ŠคํŠธ๋Š” ํ…์ŠคํŠธ ๋…ธ๋“œ
์ฃผ์„ ๋…ธ๋“œ
HTML ๋ฌธ์„œ์˜ ๋ชจ๋“  ์ฃผ์„์€ ์ฃผ์„ ๋…ธ๋“œ

๋…ธ๋“œ ๊ฐ„์˜ ๊ด€๊ณ„

DOM์€ ๋…ธ๋“œ ๊ฐ„์˜ ๊ณ„์ธต์  ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๋ถ€๋ชจ-์ž์‹-ํ˜•์ œ ๊ด€๊ณ„๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๋…ธ๋“œ ๊ด€๊ณ„ ์†์„ฑ

๋…ธ๋“œ
์„ค๋ช…
๋ฃจํŠธ ๋…ธ๋“œ
๊ฐ€์ƒ ์ƒ์œ„์— ์žˆ๋Š” ๋‹จ ํ•˜๋‚˜์˜ ๋…ธ๋“œ (<html>)
๋ถ€๋ชจ ๋…ธ๋“œ
๋ฐ”๋กœ ์ƒ์œ„์— ์žˆ๋Š” ๋‹จ ํ•˜๋‚˜์˜ ๋…ธ๋“œ
์ž์‹ ๋…ธ๋“œ
๋ฐ”๋กœ ํ•˜์œ„์— ์žˆ๋Š” ๋…ธ๋“œ
ํ˜•์ œ ๋…ธ๋“œ
๊ฐ™์€ ๋ถ€๋ชจ ๋…ธ๋“œ๋ฅผ ๊ฐ–๋Š” ๋…ธ๋“œ
์กฐ์ƒ ๋…ธ๋“œ
ํ˜„์žฌ ๋…ธ๋“œ๋ณด๋‹ค ์ƒ์œ„์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ๋…ธ๋“œ
์ž์† ๋…ธ๋“œ
ํ˜„์žฌ ๋…ธ๋“œ๋ณด๋‹ค ํ•˜์œ„์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ๋…ธ๋“œ

๋…ธ๋“œ ์ ‘๊ทผ ์†์„ฑ

Node ๋‹จ์œ„๋กœ ์ ‘๊ทผํ•˜๋Š” ์†์„ฑ : HTML ์˜ ๋ชจ๋“  ๋…ธ๋“œ = ์š”์†Œ+์†์„ฑ+์ปจํ…์ธ +์ฃผ์„ ๋“ฑ
์†์„ฑ
์„ค๋ช…
parentNode
๋ถ€๋ชจ ๋…ธ๋“œ
childNodes
๋ชจ๋“  ์ž์‹ ๋…ธ๋“œ(NodeList)
firstChild
์ฒซ ๋ฒˆ์งธ ์ž์‹ ๋…ธ๋“œ
lastChild
๋งˆ์ง€๋ง‰ ์ž์‹ ๋…ธ๋“œ
nextSibling
๋‹ค์Œ ํ˜•์ œ ๋…ธ๋“œ
previousSibling
์ด์ „ ํ˜•์ œ ๋…ธ๋“œ

์š”์†Œ ์ ‘๊ทผ ์†์„ฑ

Element ๋‹จ์œ„๋กœ ์ ‘๊ทผํ•˜๋Š” ์†์„ฑ : ํƒœ๊ทธ๋งŒ ์„ ํƒํ•˜๋Š” ์†์„ฑ
์†์„ฑ
์„ค๋ช…
parentElement
๋ถ€๋ชจ ์š”์†Œ(Element)
children
์ž์‹ ์š”์†Œ๋“ค
firstElementChild
์ฒซ ๋ฒˆ์งธ ์ž์‹ ์š”์†Œ
lastElementChild
๋งˆ์ง€๋ง‰ ์ž์‹ ์š”์†Œ
nextElementSibling
๋‹ค์Œ ํ˜•์ œ ์š”์†Œ
previousElementSibling
์ด์ „ ํ˜•์ œ ์š”์†Œ
Node = HTML ์•ˆ์— ์กด์žฌํ•˜๋Š” โ€œ๋ชจ๋“  ๋…ธ๋“œโ€
Element = ํƒœ๊ทธ๋งŒ ์„ ํƒํ•˜๋Š” โ€œํด๋ฆฐํ•œ ์ ‘๊ทผโ€
<ul class="list"> <!-- ๋ฆฌ์ŠคํŠธ --> <li><a href="">๋ฆฌ์ŠคํŠธ1</a></li> <li><a href="">๋ฆฌ์ŠคํŠธ2</a></li> </ul>
JavaScript
๋ณต์‚ฌ
Node ๋‹จ์œ„๋กœ ์ ‘๊ทผํ•˜๋Š” ์†์„ฑ
[ <!-- ๋ฆฌ์ŠคํŠธ --> #text("\n "), li, #text("\n "), li, #text("\n "), ]
JavaScript
๋ณต์‚ฌ
Element ๋‹จ์œ„๋กœ ์ ‘๊ทผํ•˜๋Š” ์†์„ฑ
[ li, li ]
JavaScript
๋ณต์‚ฌ

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
๋ณต์‚ฌ
์‹ค์Šต