WIL 4์ฃผ์ฐจ

hyena_leeยท2023๋…„ 1์›” 8์ผ
0

WIL

๋ชฉ๋ก ๋ณด๊ธฐ
8/21
post-thumbnail

๐Ÿ—“ ์˜ค๋Š˜ ๋ฐฐ์šด ๋‚ด์šฉ

1.DOM ๊ฐœ๋…, ๊ตฌ์กฐ
2. DOM์„ javascript๋กœ ์กฐ์ž‘ํ•˜์—ฌ C,R,U,D
3. innerHTML, textContent ์ดํ•ด

DOM์ด๋ž€?

: ๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ, ์ฆ‰ DOM์€ ์›น ํŽ˜์ด์ง€(HTML์ด๋‚˜ XML ๋ฌธ์„œ)์˜ ์ฝ˜ํ…์ธ  ๋ฐ ๊ตฌ์กฐ, ๊ทธ๋ฆฌ๊ณ  ์Šคํƒ€์ผ ์š”์†Œ๋ฅผ ๊ตฌ์กฐํ™” ์‹œ์ผœ ํ‘œํ˜„ํ•˜์—ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ํ•ด๋‹น ๋ฌธ์„œ์— ์ ‘๊ทผํ•˜์—ฌ ์ฝ๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก API๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ผ์ข…์˜ ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. ์ฆ‰ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ™์€ ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด๊ฐ€ ์‰ฝ๊ฒŒ ์›น ํŽ˜์ด์ง€์— ์ ‘๊ทผํ•˜์—ฌ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

DOM์€ ์–ด๋–ป๊ฒŒ ์ƒ์„ฑ๋˜๋Š”๊ฐ€?

DOM์€ ์›น ํŽ˜์ด์ง€, ์ฆ‰ HTML ๋ฌธ์„œ๋ฅผ ๊ณ„์ธต์  ๊ตฌ์กฐ์™€ ์ •๋ณด๋กœ ํ‘œํ˜„ํ•˜๋ฉฐ, ์ด๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ HTML DOM, ํ˜น์€ HTML DOM Tree๋กœ ๋ถ€๋ฅด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.
ํŠธ๋ฆฌ ์ž๋ฃŒ ๊ตฌ์กฐ๋กœ ๊ตฌ์ถ•์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์—, HTML ๋ฌธ์„œ๋Š” ์ตœ์ข…์ ์œผ๋กœ ํ•˜๋‚˜์˜ ์ตœ์ƒ์œ„ ๋…ธ๋“œ(root ๋…ธ๋“œ)์—์„œ ์‹œ์ž‘ํ•ด ์ž์‹ ๋…ธ๋“œ๋“ค์„ ๊ฐ€์ง€๋ฉฐ, ์•„๋ž˜๋กœ๋งŒ ๋ป—์–ด๋‚˜๊ฐ€๋Š” ๊ตฌ์กฐ๋กœ ๋งŒ๋“ค์–ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

document ๋…ธ๋“œ๊ฐ€ ์ตœ์ƒ์œ„ ๋…ธ๋“œ๊ฐ€ ๋˜๊ณ , ๋ฐ‘์œผ๋กœ element ๋…ธ๋“œ๊ฐ€ ์˜ค๋ฉฐ, ์ด์–ด text ๋…ธ๋“œ์™€ attribute ๋…ธ๋“œ๊ฐ€ ์˜ค๋Š” ๊ณ„์ธต์ ์ธ ๊ตฌ์กฐ์ž„์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋…ธ๋“œ ํƒ€์ž…์—๋Š” ์ด 12๊ฐœ๊ฐ€ ์žˆ๋Š”๋ฐ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์œ„์—์„œ๋„ ๋ช…์‹œ๊ฐ€ ๋˜์–ด ์žˆ๋“ฏ ์ด 4๊ฐ€์ง€์˜ ๋…ธ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

document node (๋ฌธ์„œ ๋…ธ๋“œ)

DOM Tree์—์„œ ์ตœ์ƒ์œ„ ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, document ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค. HTML ๋ฌธ์„œ ์ „์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋…ธ๋“œ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. window ๊ฐ์ฒด์˜ document ํ”„๋กœํผํ‹ฐ๋กœ ๋ฐ”์ธ๋”ฉ(์—ฐ๊ฒฐ)์ด ๋˜์–ด ์žˆ์–ด window.document , document๋กœ ์ฐธ์กฐํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. HTML ๋ฌธ์„œ์— ์ด ๋ฌธ์„œ ๋…ธ๋“œ๋Š” ์˜ค๋กœ์ง€ 1๊ฐœ๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

element node (์š”์†Œ ๋…ธ๋“œ)

๋ชจ๋“  HTML ์š”์†Œ (body, h2, div ๋“ฑ)๋Š” ์ด ์š”์†Œ ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค. ์†์„ฑ ๋…ธ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋…ธ๋“œ๋กœ์„œ, ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณ„์ธต์  ๊ตฌ์กฐ๋ฅผ ์ด๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

attribute node (์†์„ฑ ๋…ธ๋“œ)

๋ชจ๋“  HTML ์š”์†Œ์˜ ์†์„ฑ์€ ์ด ์†์„ฑ ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค. ์š”์†Œ ๋…ธ๋“œ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ์•„๋‹Œ ํ•ด๋‹น ๋…ธ๋“œ์™€ ์—ฐ๊ฒฐ(๋ฐ”์ธ๋”ฉ)์ด ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

text node (ํ…์ŠคํŠธ ๋…ธ๋“œ)

HTML ๋ฌธ์„œ์˜ ๋ชจ๋“  ํ…์ŠคํŠธ๋Š” ์ด ํ…์ŠคํŠธ ๋…ธ๋“œ๋ผ ํ•ด๋„ ๊ณผ์–ธ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ…์ŠคํŠธ ๋…ธ๋“œ๋Š” ์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•˜๋ฉฐ, ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์œ„์น˜ํ•˜๋Š” ์ž์‹ ๋…ธ๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์žŽ์‚ฌ๊ท€๋ฅผ ๋‹ฎ์•˜๋‹ค ํ•ด ๋ฆฌํ”„ ๋…ธ๋“œ๋ผ๊ณ  ๋ถˆ๋ฆฌ๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

์ด 4๊ฐ€์ง€ ๋…ธ๋“œ๋“ค์ด ์กด์žฌํ•จ์œผ๋กœ์จ ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด๊ฐ€ ์›นํŽ˜์ด์ง€์— ์ ‘๊ทผํ•˜๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ํ•˜๊ธฐ๊ฐ€ ๋น ๋ฅธ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ์ด๋ค„์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ์ ‘๊ทผํ•˜๊ณ  ์กฐ์ž‘ํ•˜์—ฌ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•˜๋Š” ์†๋„๋Š” ๋น ๋ฅธ ํŽธ์ž…๋‹ˆ๋‹ค.

DOM์˜ ๋ฐ์ดํ„ฐํƒ€์ž…(Datatype)

ํ”„๋กœํผํ‹ฐ(property) : DOM ๊ฐ์ฒด์˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค. HTML ํƒœ๊ทธ์˜ ์†์„ฑ์„ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.
๋ฉ”์†Œ๋“œ(method) : DOM ๊ฐ์ฒด์˜ ๋ฉค๋ฒ„ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. HTML ํƒœ๊ทธ๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.
์ปฌ๋ ‰์…˜(collection) : ์ •๋ณด๋ฅผ ์ง‘ํ•ฉ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ์ผ์ข…์˜ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด children ์ปฌ๋ ‰์…˜์€ DOM ๊ฐ์ฒด์˜ ๋ชจ๋“  ์ž์‹ DOM ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ(event listener) : HTML ํƒœ๊ทธ์— ์ž‘์„ฑ๋œ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ(onclick, onchange ๋“ฑ)๋“ค์„ ๊ทธ๋Œ€๋กœ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
์Šคํƒ€์ผ(style) : ์ด ํ”„๋กœํผํ‹ฐ๋ฅผ ํ†ตํ•ด HTML ํƒœ๊ทธ์— ์ ์šฉ๋œ CSS ์Šคํƒ€์ผ ์‹œํŠธ์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”— DOM - CRUD

document ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด์„œ HTML element๋ฅผ ๋งŒ๋“ค๊ณ (CREATE), ์กฐํšŒํ•˜๊ณ (READ), ๊ฐฑ์‹ ํ•˜๊ณ (UPDATE), ์‚ญ์ œํ•˜๋Š”(DELETE) ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

โœ… CREATE

โœ… APPEND
DOM์œผ๋กœ ์ƒ์„ฑ๋œ HTML element๋ฅผ ๋ถ€๋ชจ ๋…ธ๋“œ์— ํฌํ•จํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

โœ… READ
DOM์œผ๋กœ HTML element๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

querySelector์˜ ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋กœ ์…€๋ ‰ํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜์—ฌ element์˜ ์ •๋ณด๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, HTML ์š”์†Œ('div'), id('#tweetList'), class('.tweet') ์„ธ ๊ฐ€์ง€๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.

  • ์œ ์‚ฌ ๋ฐฐ์—ด?
    querySelectorAll์„ ์ด์šฉํ•ด ์กฐํšŒํ•œ ์š”์†Œ๋“ค์€ ๋ฐฐ์—ด์ฒ˜๋Ÿผ for๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹จ, ๋ฐฐ์—ด์ด ์•„๋‹ˆ๋ผ ์œ ์‚ฌ ๋ฐฐ์—ด(aka.๋ฐฐ์—ด์ด ์•„๋‹Œ ๋ฐฐ์—ด, ๋ฐฐ์—ดํ˜• ๊ฐ์ฒด ๋“ฑ)์ด๋‹ค. (์ •์‹๋ช…์นญ์€ Array like Object)

์•„๋ž˜๋Š” get์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” DOM ์กฐํšŒ ๋ฉ”์„œ๋“œ์ด๋‹ค.

CREATE์—์„œ ์ƒ์„ฑํ•œ

์š”์†Œ๋Š” ์š”์†Œ์— ์œ„์น˜ํ•ด์žˆ๋‹ค. container์— ๋„ฃ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด์•ผํ•œ๋‹ค.

โœ… UPDATE

DOM์œผ๋กœ HTML Element๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

setAttribute()

setAttribute()๋ฅผ ์ด์šฉํ•ด ์ƒ์„ฑํ•œ ์š”์†Œ์˜ attribute๋ฅผ ์„ค์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

โœ… DELETE
: ์‚ญ์ œํ•˜๋ ค๋Š” ์š”์†Œ์˜ ์œ„์น˜๋ฅผ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ

innerHTML

:innerHTML์„ ์ด์šฉํ•ด ๋ชจ๋“  ์ž์‹ ์š”์†Œ๋ฅผ ์ง€์šธ ์ˆ˜ ์žˆ๋‹ค.

โœ… innerHTML vs innerText vs textContent

innerHTML(HTMLelement property)

์ด๋ฆ„ ๊ทธ๋Œ€๋กœ HTML ์ „์ฒด ๋‚ด์šฉ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๊ฐ„ํ˜น innerHTML์„ ์‚ฌ์šฉํ•ด ์š”์†Œ์˜ ํ…์ŠคํŠธ๋ฅผ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์“ฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์ง€๋งŒ, HTML๋กœ ๋ถ„์„ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ์ ์—์„œ textContent์˜ ์„ฑ๋Šฅ์ด ๋” ์šฐ์ˆ˜ํ•˜๋‹ค.

innerText(element property)

์š”์†Œ์™€ ๊ทธ ์ž์‹์˜ "์œ ์ €๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋Š”" ํ…์ŠคํŠธ ์ฝ˜ํ…์ธ ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋”ฐ๋ผ์„œ css์—์„œ display:none์œผ๋กœ ์ •์˜๋œ ํ…์ŠคํŠธ๋Š” ๋ณด์—ฌ์ง€์ง€ ์•Š๋Š”๋‹ค. ์ด์™€ ๊ฐ™์ด ์Šคํƒ€์ผ๋ง์„ ๊ณ ๋ คํ•˜๊ธฐ ๋•Œ๋ฌธ์— innerText ๊ฐ’์„ ์ฝ์œผ๋ฉด ์ตœ์‹  ๊ณ„์‚ฐ๊ฐ’์„ ๋ฐ˜์˜ํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌํ”Œ๋กœ์šฐ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. (๋ฆฌํ”Œ๋กœ์šฐ ๊ณ„์‚ฐ์€ ๋น„์‹ธ๋ฏ€๋กœ ๊ฐ€๋Šฅํ•˜๋ฉด ํ”ผํ•ด์•ผ ํ•œ๋‹ค.)

textContent(node property)

innerText๊ธฐ "์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š”" ์š”์†Œ๋งŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ˜๋ฉด textContent๋Š”

๋˜ํ•œ,innerText๋Š” ์Šคํƒ€์ผ๋ง์„ ๊ณ ๋ คํ•˜๊ธฐ ๋•Œ๋ฌธ์— "์ˆจ๊ฒจ์ง„" ์š”์†Œ์˜ ํ…์ŠคํŠธ๋Š” ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š” ๋ฐ˜๋ฉด์— textContent๋Š” ๋…ธ๋“œ์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

profile
์‹ค์ˆ˜๋ฅผ ๋‘๋ ค์›Œ ๋ง๊ณ  ๊ณ„์† ๋„์ „ ํ•˜๋Š” ๊ฐœ๋ฐœ์ž์˜ ์—ฌ์ •!

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