πŸ‡λ°•λ΄‰λ΄‰πŸ‡ 2020. 9. 22. 22:02

 

D+16

-  DOM -

(DOM, DOM μ‘°μž‘)

 


 

 

DOM ( Document Object Model )

HTML(Document)에 μ ‘κ·Όν•˜μ—¬ Object(Java Script)처럼 μ—˜λ¦¬λ¨ΌνŠΈμ˜ 속성값을 μ–»μ–΄λ‚΄κ±°λ‚˜ λ³€κ²½ν•  수 있게 ν•˜λŠ” λͺ¨λΈ

 

 νŠΈλ¦¬κ΅¬μ‘°

 

 

μ—˜λ¦¬λ¨ΌνŠΈλ₯Ό ν™•μΈν•˜λŠ” 방법

보톡 μš°λ¦¬λŠ” μ—˜λ¦¬λ¨ΌνŠΈλ₯Ό 확인할 λ•Œ μ½˜μ†”μ°½μ— 'console.log()'λ₯Ό μž…λ ₯ν•΄ 확인해 μ™”λ‹€.

 

ν•˜μ§€λ§Œ μ΄λ ‡κ²Œ μž…λ ₯ν–ˆμ„ 경우 ꡬ체적인 속성값듀을 ν™•μΈν•˜κΈ° μ–΄λ ΅λ‹€.

 

λ§Œμ•½ λ‹€μ–‘ν•œ 속성듀을 ν™•μΈν•˜κΈ°λ₯Ό μ›ν•œλ‹€λ©΄ 'console.dir()'을 μž…λ ₯ν•˜κ²Œ 되면 

μ—˜λ¦¬λ¨ΌνŠΈκ°€ 객체의 ν˜•νƒœλ‘œ λ‹€μ–‘ν•˜κ²Œ λ‚˜μ˜€λŠ” 것을 확인할 수 μžˆλ‹€.

 

 

element 객체에 μ‚¬μš©λ˜λŠ” 속성

속성 속성 이름
νƒœκ·Έ 이름 tagName
id id
class λͺ©λ‘ classList
class λ¬Έμžμ—΄ className
속성 객체 attributes
μŠ€νƒ€μΌ 객체 style
μ—˜λ¦¬λ¨ΌνŠΈμ— λ‹΄κΈ΄ λ‚΄μš© innerHTML, innerText, textContent
form μž…λ ₯ κ°’ value
μžμ‹ μ—˜λ¦¬λ¨ΌνŠΈ children
λΆ€λͺ¨ μ—˜λ¦¬λ¨ΌνŠΈ parentElement
μžμ‹ λ…Έλ“œ childNodes
data -* 속성에 λ‹΄κΈ΄ κ°’ dataset
이벀트 onclick

 

 

μžμ‹ μ—˜λ¦¬λ¨ΌνŠΈ vs μžμ‹ λ…Έλ“œ

• children (μžμ‹ μ—˜λ¦¬λ¨ΌνŠΈ)

μžμ‹ μ—˜λ¦¬λ¨ΌνŠΈλŠ” 말 κ·ΈλŒ€λ‘œ ν˜„μž¬ μš”μ†Œμ— μžˆλŠ” μžμ‹ μš”μ†Œλ“€μ„ λ°˜ν™˜ν•˜λŠ” κ²ƒμœΌλ‘œ λΉ„μš”μ†ŒμΌ κ²½μš°λŠ” ν¬ν•¨λ˜μ§€ μ•ŠλŠ”λ‹€.

 

• childNodes (μžμ‹ λ…Έλ“œ)

ν˜„μž¬ μš”μ†Œμ˜ μžμ‹ λ…Έλ“œκ°€ ν¬ν•¨λœ NodeListλ₯Ό λ°˜ν™˜ν•˜κ²Œ λ˜λŠ”λ° λΉ„μš”μ†ŒμΈ 주석같은 것도 ν¬ν•¨λ˜μ–΄ λ‚˜μ˜€κ²Œ λœλ‹€.

이λ₯Ό 톡해 μ•Œ 수 μžˆλŠ” 건 elementλŠ” Node에 속해 μžˆλ‹€λŠ” 것 을 ν•  수 μžˆλ‹€.

 

 

innerText / innerHTML / textContent

• innerText

화면에 λ Œλ”λ§μ΄ λ˜μ–΄μ§€κ³  μžˆλŠ” λͺ¨μŠ΅μœΌλ‘œ ν…μŠ€νŠΈκ°€ 보여진닀.

 

• innerHTML

ν…μŠ€νŠΈμ™€ νƒœκ·Έλ“€κΉŒμ§€ ν¬ν•¨ν•œ λ‚΄μš©λ“€μ΄ λ‚˜μ˜€κ²Œ 되며 μ‹€μ œλ‚΄μš©μ„ λ³€κ²½ν•  수 μžˆλ‹€.

 

• textContent

μ‹€μ œ 곡백을 λͺ¨λ‘ ν¬ν•¨ν•΄μ„œ 보여지며 μ‹€μ œλ‚΄μš©μ„ λ³€κ²½ν•  수 μžˆλ‹€.

 

 

value

valueλŠ” 폼에 μž…λ ₯ν•œ 값을 λ°›μ•„μ˜¬ λ•Œ μ‚¬μš©ν•œλ‹€.

 

HTML ν™”λ©΄
μ½˜μ†”μ°½

μ΄λŸ°μ‹μœΌλ‘œ HTML ν™”λ©΄μ—μ„œ '홍길동'μ΄λΌλŠ” 값을 μž…λ ₯ν•˜κ²Œ 되면

μ½˜μ†”μ°½μ— valueλ₯Ό μ‚¬μš©ν•΄ 폼에 μž…λ ₯λ˜μ–΄μ§„ '홍길동'μ΄λΌλŠ” 값을 뢈러올 수 있게 λœλ‹€.

 

 


DOM μ‘°μž‘

κ°„λ‹¨ν•˜κ²Œ DOM의 속성과 μ •μ˜ 등에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μ•˜λ‹€λ©΄ μ΄λ²ˆμ—λŠ” DOM 직접 μ‚¬μš©ν•΄λ³΄κ³  μ‘°μž‘ν•΄ λ³Ό 수 μžˆμ–΄μ•Ό ν•œλ‹€.

 

 

Element 생성

μ—˜λ¦¬λ¨ΌνŠΈλ₯Ό μƒμ„±ν•˜λŠ” 방법은 createElementλ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€.

document.createElement('div'); // 'div'λΌλŠ” μš”μ†Œλ₯Ό λ§Œλ“€κ³  μ‹Άλ‹€.

μ‹€ν–‰ν™”λ©΄

 

 

Element μ²¨λΆ€ν•˜κΈ°

μ‹€ν–‰ν™”λ©΄
μ½˜μ†” μž…λ ₯μ°½

appendλ₯Ό μ‚¬μš©ν•˜λ©΄ μœ„μ˜ ν™”λ©΄μ²˜λŸΌ 기쑴에 μ—†μ—ˆλ˜ divνƒœκ·Έλ₯Ό 첨뢀할 수 μžˆλ‹€.

 

μ΄λ•Œ appendλŠ” 'append, preappend, appendchild'κ°€ μžˆλ‹€.

 

• append

선택 μš”μ†Œμ˜ μžμ‹ μš”μ†Œ 뒀에 λ‚΄μš© μ‚½μž…

 

• prepend

선택 μš”μ†Œμ˜ μžμ‹ μš”μ†Œ μ•žμ— λ‚΄μš© μ‚½μž…

 

• appendChild

선택 μš”μ†Œμ˜ μžμ‹ μš”μ†Œ 뒀에 λ‚΄μš© μ‚½μž…

 

  append() appendChild()
νƒ€μž… μžλ°”μŠ€ν¬λ¦½νŠΈ DOM
μΆ”κ°€λ…Έλ“œ μ—¬λŸ¬κ°œ μΆ”κ°€ 단일 ν•­λͺ©
λ¬Έμžμ—΄ λ…Έλ“œ 지원 κ°€λŠ₯ λΆˆκ°€λŠ₯ (λ…Έλ“œκ°μ²΄λ§Œ κ°€λŠ₯)
리턴 κ°’ μ—†μŒ μΆ”κ°€λœ λ…Έλ“œ 객체 λ°˜ν™˜

 

 

Element 쑰회

• νƒœκ·Έ : getElementsByTagName

 

• id : getElementById

ν΄λž˜μŠ€μ™€λŠ” 달리 μ•„μ΄λ””λŠ” sκ°€ λΉ μ ΈμžˆλŠ”λ° μ΄λŠ” idλŠ” 자체의 κ°œμ„±μ΄ μžˆμ–΄ ν•œλ²ˆλ§Œ μ‚¬μš©ν•  수 있기 λ•Œλ¬Έμ— 볡수의 sκ°€ λΉ μ§„ 것이닀.

 

• class : getElementsByClassName

 

• selector : querySelector / querySelectorAll

querySelectorλŠ” κ°€μž₯ μ΅œμƒμœ„μ˜ μš”μ†Œλ₯Ό ν™•μΈν•˜κ±°λ‚˜ ν•΄λ‹Ή μš”μ†Œκ°€ ν•˜λ‚˜μΌλ•Œ μ‚¬μš©ν•˜λ©°,

querySelectorAll은 μš”μ†Œκ°€ μ—¬λŸ¬κ°œμΌλ•Œ ν•œλ²ˆμ— ν™•μΈν• λ•Œ μ‚¬μš©ν•œλ‹€.

 

 

 

Element μˆ˜μ •

• textContent

기쑴에 μž‘μ„±λ˜μ–΄μ§„ text에 μž¬ν• λ‹Ήμ΄ κ°€λŠ₯ν•˜λ‹€.

 

• classList.add

클래슀λ₯Ό ν•„μš”μ— 따라 μ‚½μž…ν•  수 μžˆλ‹€.

 

 

 

Element μ‚­μ œ

• remove

λ…Έλ“œλ₯Ό λ©”λͺ¨λ¦¬μ—μ„œ μ‚­μ œν•˜κ³  μ’…λ£Œν•œλ‹€.

 

• removeChild

λ…Έλ“œλ₯Ό λ©”λͺ¨λ¦¬μ—μ„œ μ‚­μ œν•˜λŠ” 것이 μ•„λ‹Œ λΆ€λͺ¨ λ…Έλ“œμ™€μ˜ μžμ‹κ΄€κ³„λ₯Ό λŠμ–΄

DOM νŠΈλ¦¬μ—μ„œ ν•΄μ œν•˜λŠ” 것이닀.

 

 

λ°˜μ‘ν˜•