1. DOM

0

DOM

๋ชฉ๋ก ๋ณด๊ธฐ
1/2
post-thumbnail

๐Ÿ“ DOM
JavaScript๋ฅผ ์ด์šฉํ•ด์„œ ์—˜๋ฆฌ๋จผํŠธ์˜ ์†์„ฑ๊ฐ’์„ ์–ป์–ด ๋‚ด๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•

1. DOM ์˜ ์ฃผ๋ชฉ์ ๊ณผ ๋‹จ์ 

์ฃผ๋ชฉ์  : ์ž๋ฐ”์ŠคํŠธ๋ฆฝํŠธ๋กœ ๋ฌธ์„œ๋ฅผ ์„ ํƒํ•˜๊ณ  , ์†์„ฑ๊ณผ ์Šคํƒ€์ผ์„ ์ ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹จ์  : ์ž๋ฐ”์ŠคํŠธ๋ฆฝํŠธ ๋” ๊ฐœ๋ฐœ์€ IE ์ดํ•˜ ๋ฒ„์ „๊ณผ ๊ธฐํƒ€ ๋ธŒ๋ผ์šฐ์ € ๊ฐ„์˜ ํ˜ธํ™˜์„ฑ์ด ๋–จ์–ด์ง„๋‹ค.


๐Ÿ“Œ ์„ ํƒ์ž
์ง์ ‘์„ ํƒ์ž, ์›๊ฑฐ๋ฆฌ์„ ํƒ์ž : id, class, ํผ/์š”์†Œ๋ช…(ํƒœ๊ทธ๋ช…)
์ธ์ ‘๊ด€๊ณ„์„ ํƒ์ž : parentNode, childNodes, firstchild, children, previousSibling,nextSibling
Element ์„ ํƒ

  • ํƒœ๊ทธ ์ด์šฉ : getElementByTagName('ํƒœ๊ทธ๋ช…')
  • id ์ด์šฉ : getElementById('์•„์ด๋””๋ช…')
  • class ์ด์šฉ : getElementsByclassName('ํด๋ž˜์Šค๋ช…')
  • selector ์ด์šฉ:
    querySelector('#์•„์ด๋””๋ช…/.ํด๋ž˜๋ช…/ํƒœ๊ทธ๋ช… ') -> ์ƒ์œ„ ํ•œ๊ฐœ๋งŒ ๊ฐ€์ ธ์˜จ๋‹ค
    querySelectorAll('#์•„์ด๋””๋ช…/.ํด๋ž˜๋ช…/ํƒœ๊ทธ๋ช… ') -> ํ•ด๋‹น๋˜๋Š”๊ฑฐ ๋‹ค ๊ฐ€์ ธ์˜จ๋‹ค.

๐Ÿ“Œ DOM ์œผ๋กœ HTML ์กฐ์ž‘ํ•˜๊ธฐ

  • CREATE - createElement() ์ƒ์„ฑํ•˜๊ธฐ
const tweetDiv = document.createElement('div') //document.creteElement(ํƒœ๊ทธ๋ช…)

div ์š”์†Œ๋ฅผ ์ƒ์„ฑ ํ•˜์˜€์ง€๋งŒ ํ˜„์žฌ ๊ณต์ค‘์— ๋„์–ด์ง„ ์ƒํƒœ์™€ ๊ฐ™๋‹ค.

  • APPEND - append(), appendChild() ์ถ”๊ฐ€ํ•˜๊ธฐ
document.body.append(tweetDiv) // ๋ถ€๋ชจ๋…ธ๋“œ.append(๋„ฃ์„์š”์†Œ)

๊ณต์ค‘์— ๋„์–ด์ ธ ์žˆ๋Š” ์ƒ์„ฑ๋œ div๋ฅผ ๋ถ€๋ชจ ์š”์†Œ์—๊ฒŒ ์—ฐ๊ฒฐ์„ ํ•ด์ฃผ๊ธฐ ์œ„ํ•ด append ํ•ด์ค€๋‹ค.
append์—๋Š” ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.
append(), appendChild() ๋‘๊ฐ€์ง€์˜ ์ฐจ์ด์ ์„ ์•Œ์•„๋ณด์ž

append() ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•œ๋‹ค.
+preoend()๋ฉ”์†Œ๋“œ๋Š” ์•ž์ชฝ์— ์ถ”๊ฐ€ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

  • READ - querySelector, querySelectorAll
const oneTweet = document.querySelector('.tweet')

querySelector('#์•„์ด๋””๋ช…/.ํด๋ž˜๋ช…/ํƒœ๊ทธ๋ช… ') -> ์ƒ์œ„ ํ•œ๊ฐœ๋งŒ ๊ฐ€์ ธ์˜จ๋‹ค
querySelectorAll('#์•„์ด๋””๋ช…/.ํด๋ž˜๋ช…/ํƒœ๊ทธ๋ช… ') -> ํ•ด๋‹น๋˜๋Š”๊ฑฐ ๋‹ค ๊ฐ€์ ธ์˜จ๋‹ค.

  • UPDATE - textContent, classList.add
oneDiv.textContent = 'dev'; // ๊ฐ’์„ ๋„ฃ๋Š”๊ฒƒ 
oneDiv.classList.add('tweet') //์—…๋ฐ์ดํŠธ

//textContent -> textContent์˜ ๊ฐ’์€ ์‹๋ณ„์ž ๋…ธ๋“œ์˜ ๋‚ด๋ถ€ ์ฝ˜ํ…์ธ ๋ฅผ text/plain์œผ๋กœ ํŒŒ์‹ฑ(Parsing)ํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ํ•ด๋‹น ์š”์†Œ ๋‚ด๋ถ€์˜ ์›์‹œ ํ…์ŠคํŠธ(raw text) ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹ค๋ฅธ ํ”„๋กœํผํ‹ฐ๋“ค์— ๋น„ํ•ด ํŒŒ์‹ฑ์ด ๋น ๋ฆ…๋‹ˆ๋‹ค.
//innerText -> innerText ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’ ๋˜ํ•œ text/plain์œผ๋กœ ํŒŒ์‹ฑํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ innerText๋Š” textContent์™€ ํ˜ผ๋™ํ•˜๊ธฐ ์‰ฌ์šฐ๋‚˜, ์ค‘์š”ํ•œ ์ฐจ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. innerText์˜ ๊ฐ’์€ ์›์‹œ ํ…์ŠคํŠธ๊ฐ€ ์ตœ์ข…์ ์œผ๋กœ (ํ™”๋ฉด์—) ๋ Œ๋”๋ง ๋œ ๋ชจ์Šต, ์˜ˆ๋ฅผ ๋“ค์–ด ๋‚ด์šฉ ์ˆจ๊น€์ด๋‚˜ ์ค„๋ฐ”๊ฟˆ ๊ฐ™์ด ์˜๋„์ ์ธ ์Šคํƒ€์ผ๋ง์ด ๋“ค์–ด๊ฐ„ ํ›„์˜ ๋ชจ์Šต์ด ๋ฉ๋‹ˆ๋‹ค.
//innerHTML -> innerHTML ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’์€ text/html์œผ๋กœ ํŒŒ์‹ฑํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ƒ๋Œ€์ ์œผ๋กœ ํŒŒ์‹ฑ์ด ๋Š๋ฆฝ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ณด์•ˆ์— ์ทจ์•ฝํ•ฉ๋‹ˆ๋‹ค.

  • DELETE - remove, removeChild
tweetDiv.remove()

์ž์‹ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ง€์šฐ๋Š” ๋ฐฉ๋ฒ•์€ ์–ด๋–ป๊ฒŒ ๋ ๊นŒ ?

document.querySelector('#container').innerHTML = '';

์œ„์—์ฒ˜๋Ÿผ ํ•˜๋ฉด ๊ฐ„๋‹จํ•˜์ง€๋งŒ ๋ณด์•ˆ์ƒ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
removeChild๋Š” ์ž์‹ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ง€์ •ํ•ด์„œ ์‚ญ์ œํ•˜๋Š” ๋ฉ”์†Œ๋“œ ์ž…๋‹ˆ๋‹ค. ๋ชจ๋‘ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด์„œ while๋ฌธ์„ ํ™œ์šฉ ํ•ฉ๋‹ˆ๋‹ค.

const container = document.querySelector('#container');
while (container.children.length > 1) {
  container.removeChild(container.lastChild);
}

์ž์‹ ์—˜๋ฆฌ๋จผํŠธ๊ฐ€ ์—†์„๋•Œ ๊นŒ์ง€ ์ง€์šฐ๊ฒ ๋‹ค๋Š” ์ฝ”๋“œ ์ž…๋‹ˆ๋‹ค.

profile
๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ปํ•ญ์ƒ๋ฐœ์ „ํ•˜์ž ๐Ÿ”ฅ

0๊ฐœ์˜ ๋Œ“๊ธ€