๐Ÿ”ฅ [UIUX] 0130 JAVASCRIPT Coding, ์ฝ”๋”ฉ ์ดˆ๊ธ‰~๊ณ ๊ธ‰ 16

You_Jin.ยท2025๋…„ 1์›” 30์ผ
1
post-thumbnail

โœ๏ธ 2025. 1์›” 30์ผ / javascript ์ดˆ๊ธ‰~๊ณ ๊ธ‰ 16

๐Ÿ‘ป DOM์„ ์ด์šฉํ•œ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
HTML ์š”์†Œ์— ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์—ฐ๊ฒฐํ•ด๋†“์œผ๋ฉด ํƒœ๊ทธ ์†์„ฑ๊ณผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์†Œ์Šค๊ฐ€ ์„ž์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ˆ˜์ •ํ•˜๋ ค๋ฉด HTML ํƒœ๊ทธ์™€ ์†์„ฑ์„ ํ•˜๋‚˜์”ฉ ์ฐพ์•„๋ณด์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ DOM์„ ์ด์šฉํ•˜์—ฌ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฉด
ํƒœ๊ทธ์™€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์†Œ์Šค๊ฐ€ ๋ถ„๋ฆฌ๋˜๋ฉด์„œ ๋ณด๊ธฐ ์ข‹๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์•ž์—์„œ ๋ฐฐ์šด ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์€ HTML์ด ์ฃผ์ธ์ด ๋˜์–ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ•จ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ์™€ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ DOM์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ฃผ์ธ์ด ๋˜์–ด HTML์š”์†Œ๋ฅผ ๊ฐ€์ ธ์™€ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

    [๊ธฐ๋ณธํ˜•]
    <script>
    HTML์›น์š”์†Œ.on์ด๋ฒคํŠธ๋ช… = ํ•จ์ˆ˜๋ช…; => โญ ์†Œ๊ด„ํ˜ธ๋ฅผ ๋ถ™์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    </script>

๐Ÿ‘ป DOM์„ ์ด์šฉํ•œ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๋กœ ์ƒ์„ธ๊ธ€ ํŽ˜์ด์ง€ ๋งŒ๋“ค์–ด๋ณด๊ธฐ!



๐Ÿ‘ป ๋ฌธ์„œ ๊ฐ์ฒด, DOM(Document object model)
์›น์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์–ด๋–ค ์กฐ๊ฑด์— ๋งž๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž์˜ ๋™์ž‘์ด ์žˆ์„ ๋•Œ
์›น ๋ฌธ์„œ ์ „์ฒด ๋˜๋Š” ์ผ๋ถ€๋ถ„์ด ๋™์ ์œผ๋กœ ๋ฐ˜์‘ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ž…๋‹ˆ๋‹ค.
์ด๋ ‡๊ฒŒ ๋ฐ˜์‘ํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด ์›น ๋ฌธ์„œ์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ๋”ฐ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
DOM(๋ฌธ์„œ๊ฐ์ฒด)๋Š” HTMLํƒœ๊ทธ ๊ตฌ์กฐ๋ฅผ ํ•˜๋‚˜์”ฉ ์ฝ์–ด๋‚ด๋ ค๊ฐ€๋ฉด์„œ
์š”์†Œ์™€ ์š”์†Œ๊ฐ„์˜ ํฌํ•จ๊ด€๊ณ„๋ฅผ ๊ตฌ์กฐํ™”ํ•˜์—ฌ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
์ด๋•Œ ํ•˜๋‚˜ ํ•˜๋‚˜์˜ ํƒœ๊ทธ ํฌํ•จ๊ด€๊ณ„๋‚˜ ์š”์†Œ๋ฅผ NODE๋ผ๊ณ  ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.
์ด ๋…ธ๋“œ๋“ค์„ ์‹œ๊ฐํ™”ํ•˜์—ฌ ํ•˜๋‚˜๋กœ ํ‘œํ˜„ํ•˜๋ฉด ๋งˆ์น˜ ๋‚˜๋ฌด ๋ฟŒ๋ฆฌ์™€ ๋‹ฎ์•˜๋‹ค๊ณ  ํ•˜์—ฌ 'DOMํŠธ๋ฆฌ'๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.
๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ์„ ํ•œ ๋งˆ๋””๋กœ ์ •์˜ํ•˜์ž๋ฉด
'์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ์›น ๋ฌธ์„œ์— ์ ‘๊ทผํ•˜๊ณ  ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋„๋ก
๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ด ์›น ๋ฌธ์„œ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ์ •๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•'์ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
HTML์–ธ์–ด๋กœ ์ž‘์„ฑํ•œ ์›น ๋ฌธ์„œ์˜ DOM์„ HTML DOM์ด๋ผ๊ณ  ํ•˜๋ฉฐ, XML๋ฌธ์„œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” XML DOM๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
DOM์€ ์›น ๋ฌธ์„œ๋ฅผ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์›น ๋ฌธ์„œ๋ฅผ ์ด๋ฃจ๋Š” ํ…์ŠคํŠธ๋‚˜ ์ด๋ฏธ์ง€, ํ‘œ ๋“ฑ์˜ ๋ชจ๋“  ์š”์†Œ๋„ ๊ฐ๊ฐ ๊ฐ์ฒด๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด ์›น ๋ฌธ์„œ ์ „์ฒด๋Š” document ๊ฐ์ฒด์ด๊ณ , ์•ˆ์— ์žˆ๋Š” ์ด๋ฏธ์ง€๋Š” image ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.
์ด์ฒ˜๋Ÿผ DOM์€ ์›น ๋ฌธ์„œ์™€ ๊ทธ ์•ˆ์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ '๊ฐ์ฒด'๋กœ ์ธ์‹ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

โญ DOM ํŠธ๋ฆฌ
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ DOM์„ ์กฐ์ž‘ํ•˜๋ ค๋ฉด ์‹ค์ œ ์›น ๋ฌธ์„œ๊ฐ€ DOM์œผ๋กœ ์–ด๋–ป๊ฒŒ ํ‘œํ˜„๋˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
DOMํŠธ๋ฆฌ์˜ ์ตœ์ƒ์œ„ ๊ฐ์ฒด๋กœ๋Š” Document๊ฐ€ ์žˆ๊ณ  ๊ณง HTML ๋ฌธ์„œ ์ „์ฒด๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค.
์ด ์•ˆ์— ์ž์†์œผ๋กœ <head>,<body>๊ฐ€ ์žˆ๊ณ  head์•ˆ์—๋Š” meta๋‚˜ title, link๋“ฑ์˜ ํƒœ๊ทธ๊ฐ€ ๋“ค์–ด์žˆ์Šต๋‹ˆ๋‹ค.
body์•ˆ์—๋Š” header์™€ footer, main, div, section ๋“ฑ๋“ฑ์˜ ํƒœ๊ทธ๋“ค์ด ์„œ๋กœ ๋ถ€๋ชจ ์ž์‹ ๊ด€๊ณ„๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค.
์ด๊ฒƒ์„ ์‹œ๊ฐํ™”ํ•˜์—ฌ ์ •๋ฆฌํ•œ ๊ฒƒ์„ 'DOMํŠธ๋ฆฌ'๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.
์ด๋ ‡๊ฒŒ ๋ถ€๋ชจ์™€ ์ž์‹๊ตฌ์กฐ๋กœ ํƒœ๊ทธ๋“ค์˜ ๊ตฌ์กฐ๋ฅผ ํ‘œํ˜„ํ•˜๋ฉด ๋งˆ์น˜ ๋‚˜๋ฌดํ˜•ํƒœ๊ฐ€ ๋˜์–ด 'DOMํŠธ๋ฆฌ'๋ผ๊ณ  ํ•˜๊ณ 
ํŠธ๋ฆฌ์—์„œ ๊ฐ€์ง€๊ฐ€ ๊ฐˆ๋ผ์ ธ ๋‚˜์˜จ ํ•ญ๋ชฉ์„ '๋…ธ๋“œ(node)'๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
domํŠธ๋ฆฌ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์ธ html๋…ธ๋“œ๋ฅผ ๋‚˜๋ฌด ๋ฟŒ๋ฆฌ์— ํ•ด๋‹นํ•œ๋‹ค๊ณ  ํ•˜์—ฌ '๋ฃจํŠธ(root)๋…ธ๋“œ'๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.
๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ์‹œ์ž‘์œผ๋กœ ์›น ๋ฌธ์„œ์—์„œ ์‚ฌ์šฉํ•œ ์š”์†Œ๋Š” ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์ด๋ฃน๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ๊ฐ ๋…ธ๋“œ ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ๋ถ€๋ชจ์™€ ์ž์‹, ํ˜•์ œ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ถ€๋ชจ๋…ธ๋“œ(parent)์—๋Š” ์ž์‹๋…ธ๋“œ(child)๊ฐ€ ์žˆ๊ณ , ๋ถ€๋ชจ๋…ธ๋“œ๊ฐ€ ๊ฐ™์€ ํ˜•์ œ๋…ธ๋“œ(sibling)๋…ธ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

      โญ [DOM์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ๋ณธ ์›์น™]
      1. ๋ชจ๋“  HTMLํƒœ๊ทธ๋Š” ์š”์†Œ(element)๋…ธ๋“œ ์ž…๋‹ˆ๋‹ค.
      2. HTMLํƒœ๊ทธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ…์ŠคํŠธ ๋‚ด์šฉ์€ ์ž์‹๋…ธ๋“œ์ธ ํ…์ŠคํŠธ(text)๋…ธ๋“œ ์ž…๋‹ˆ๋‹ค.
      3. HTMLํƒœ๊ทธ์˜ ์†์„ฑ์€ ์ž์‹๋…ธ๋“œ์ธ ์†์„ฑ(attribute)๋…ธ๋“œ ์ž…๋‹ˆ๋‹ค.
      4. ์ฃผ์„์€ ์ฃผ์„(comment)๋…ธ๋“œ ์ž…๋‹ˆ๋‹ค.

โญ DOM ์š”์†Œ์— ์ ‘๊ทผํ•˜๊ณ  ์†์„ฑ ๊ฐ€์ ธ์˜ค๊ธฐ
์›น ๋ฌธ์„œ์—์„œ ์‚ฌ์šฉํ•œ ์—ฌ๋Ÿฌ ์ด๋ฏธ์ง€ ๊ฐ€์šด๋ฐ ํ•˜๋‚˜๋งŒ ๊ณจ๋ผ์„œ ํฌ๊ธฐ๋ฅผ ๋ฐ”๊พธ๋ ค๋ฉด ์ฝ• ์ง‘์–ด์„œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ด๋ ‡๊ฒŒ ์›น ๋ฌธ์„œ์—์„œ ์›ํ•˜๋Š” ์š”์†Œ๋ฅผ ์ฐพ์•„๊ฐ€๋Š” ๊ฒƒ์„ '์ ‘๊ทผํ•œ๋‹ค'๋ผ๊ณ  ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ—จ๏ธ ์†์œผ๋กœ ์ง์ ‘ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑํ•œ ๊ธ€์ด๋ž๋‹ˆ๋‹ค !
โœ–๏ธ
์•ž์œผ๋กœ๋„ ์—ด์‹ฌํžˆ ๊ณต๋ถ€ํ•ด์„œ ๋งŽ์€ ๋‚ด์šฉ์„ ๊ณต์œ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค :)

profile
๐ŸŽง แด˜สŸแด€สษชษดษข: UXUI (Feat: coding) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โšชโ”€โ”€โ”€โ”€โ”€ ๐Ÿธ:๐Ÿท๐Ÿพ / ๐Ÿน:๐Ÿป๐Ÿผโ € ใ…ค โ—„โ—„โ €โ–โ–โ €โ–บโ–บ โ”€โ”€โ”€โ—‹ ๐Ÿ”Š

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