[๐Ÿ’ป ์ฝ”๋“œ์Šคํ…Œ์ด์ธ  FE 44๊ธฐ] ๋ถ€ํŠธ์บ ํ”„ - DOM

JiEunยท2023๋…„ 3์›” 7์ผ
0
post-thumbnail

โœ”๏ธ ์‹œ์ž‘

์ด๋ฒˆ ํ•™์Šต์€ DOM์— ๋Œ€ํ•ด ์•Œ์•„ ๋ณด์•˜์œผ๋ฉฐ HTML๊ณผ Javascript๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋ฐฐ์› ๋‹ค.


๐Ÿ“ ๋ฐฐ์šด๊ฒƒ

๐Ÿ“Œ DOM(Document Object Model)

  • DOM์€ Javascript์–ธ์–ด์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ ์›น ์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” Web API ์ด๋‹ค.
  • DOM์„ ์‚ฌ์šฉํ•ด ๋ฌธ์„œ์™€ ํ•ด๋‹น ์š”์†Œ์— ์—‘์„ธ์Šค ํ•œ๋‹ค.
  • <script> ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด HTML๋ฅผ Javascript์™€ ์—ฐ๊ฒฐํ•œ๋‹ค.
  • ํŠธ๋ฆฌ ๊ตฌ์กฐ(๋ถ€๋ชจ๊ฐ€ ์ž์‹์„ ์—ฌ๋Ÿฌ๊ฐœ ๊ฐ€์ง„๋‹ค.)

โœ”๏ธ <body>ํ•˜๋‹จ์— <script>ํƒœ๊ทธ๋ฅผ ๋„ฃ์–ด์•ผํ•˜๋Š” ์ด์œ 

  • HTML ์ฝ์„ ๋•Œ script๋ฅผ ๋งŒ๋‚˜๋ฉด ๋ฉˆ์ถ”๋Š” ๋ถ€๋ถ„์ด ์ƒ๊ธฐ๊ณ  ๊ทธ ๋งŒํผ ์ง€์—ฐ๋œ๋‹ค.
  • Javascript๊ฐ€ ์ƒ์„ฑ๋˜์ง€ ์•Š์€ DOM ์กฐ์ž‘์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ๋‹ค.
<html>
  <head></head>
  <body>
    ...
  	<script src=""></script>
  </body>
</html>

๐Ÿ“Œ HTML์š”์†Œ Javascript์— ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

  • getElementById : ์•„์ด๋”” ์ด๋ฆ„ ์ž‘์„ฑ(๋‹จ์ผ)
  • getElementsTagName : ํƒœ๊ทธ ์ด๋ฆ„ ์ž‘์„ฑ(๋‹ค์ค‘)
  • gatElementsByClassName : ํด๋ž˜์Šค ์ด๋ฆ„ ์ž‘์„ฑ(๋‹ค์ค‘)
  • querySelector : css selector ํ˜•์‹์œผ๋กœ ์ž‘์„ฑ(๋‹จ์ผ)
  • querySelectorAll : css selector ํ˜•์‹์œผ๋กœ ์ž‘์„ฑ(๋‹ค์ค‘)

๐Ÿ“Œ ๋ถ€๋ชจ, ์ž์‹, ํ˜•์ œ ๋…ธ๋“œ ์ ‘๊ทผํ•˜๊ธฐ

1. ๋ถ€๋ชจ ๋…ธ๋“œ

  • parentNode : ๋ถ€๋ชจ ๋…ธ๋“œ ๋ฐ˜ํ™˜
  • parentElement : ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ์š”์†Œ ๋ฐ˜ํ™˜

2. ์ž์‹ ๋…ธ๋“œ

  • childNode : ์ž์‹ ๋…ธ๋“œ ์ค‘ ๋ชจ๋“  ๋…ธ๋“œ ๋ฐ˜ํ™˜ (text, comment ๋ชจ๋‘ ํฌํ•จ)
  • children : ์ž์‹์ธ ๋…ธ๋“œ ์ค‘ ์š”์†Œ ๋ฐ˜ํ™˜
  • firstchild/lastchild : ๋งจ ์ฒ˜์Œ/๋งˆ์ง€๋ง‰ ๋…ธ๋“œ ๋ฐ˜ํ™˜
  • firstElementChild/lastElementChild : ๋งจ ์ฒ˜์Œ/๋งˆ์ง€๋ง‰ ๋…ธ๋“œ์˜ ์š”์†Œ ๋ฐ˜ํ™˜

3. ํ˜•์ œ ๋…ธ๋“œ

  • previousSibling/nextSibling : ๊ธฐ์ค€์ด ๋˜๋Š” ๋…ธ๋“œ์˜ ์ด์ „/๋‹ค์Œ ๋…ธ๋“œ๋ฅผ ๋ฐ˜ํ™˜
  • previousElementSibling/nextElementSibling : ๊ธฐ์ค€์ด ๋˜๋Š” ๋…ธ๋“œ์˜ ์ด์ „/๋‹ค์Œ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜
๋ชจ๋“ ๋…ธ๋“œ์š”์†Œ ๋…ธ๋“œ๋งŒ
๋ถ€๋ชจparentNodeparentElement
์ž์‹childNodeschildren
firstChildfirstElementChild
lastChildlastElementChild
ํ˜•์ œpreviousSiblingpreviousElementSibling
nextSiblingnextElementSibling

์ฐธ๊ณ  : ์ฝ”๋”ฉ์•™๋งˆ
๐Ÿ”— https://youtube.com/playlist?list=PLZKTXPmaJk8JVQv3XSNF8yJMdsxbFrO3S

๐Ÿ“Œ DOM ์ œ์–ด

  • createElement : ์š”์†Œ ์ƒ์„ฑ
  • append/appendChild : ์š”์†Œ ์ถ”๊ฐ€
  • classList : class ์ ‘๊ทผ
    • add : ์ถ”๊ฐ€
    • remove : ์‚ญ์ œ
    • toggle : ์ถ”๊ฐ€/์‚ญ์ œ
    • replace : ๋ณ€๊ฒฝ
  • setAttribute : ์†์„ฑ ์ถ”๊ฐ€
  • remove/removeChild : ์š”์†Œ ์‚ญ์ œ

โœ๏ธ ๋งˆ์น˜๋ฉฐ

DOM์— ๋Œ€ํ•ด ์ž์„ธํžˆ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๊ณ  HTML์— Javascript์— ์–ด๋–ป๊ฒŒ ์ ‘๊ทผํ•ด์•ผํ•˜๋Š”์ง€, ์ถ”๊ฐ€/์‚ญ์ œ ๋“ฑ ๋‹ค์–‘ํ•œ ๋‚ด์šฉ์„ ๋ฐฐ์› ๋‹ค.

DOM์ด ๋Œ€๋žต์ ์ธ ์˜๋ฏธ๋ฅผ ์•Œ๊ณ  ์žˆ์—ˆ์ง€๋งŒ ์ด๋ฒˆ ํ•™์Šต์„ ํ†ตํ•ด ์–ด๋–ค ๋œป์ธ์ง€ ์ž์„ธํžˆ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋˜ ์‹œ๊ฐ„ ์ด์˜€๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‚ด๊ฐ€ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋Š”๊ฒŒ ์ •ํ™•ํžˆ ์–ด๋–ค ๋ช…์นญ์„ ๊ฐ–๊ณ  ์žˆ๋Š”์ง€๋„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์•„์ง Javascript์˜ ๊ธธ์€ ๋จผ ๊ฑฐ ๊ฐ™๋‹ค...

profile
๐Ÿ’ป ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๋ชฉํ‘œ๋กœ ์„ฑ์žฅ ์ค‘! (์•Œ์•„๋ดค๋˜ ๋‚ด์šฉ ๋“ฑ์„ ์ •๋ฆฌํ•˜๊ธฐ)

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