15-1. JS ๋ฌธ์„œ๊ฐ์ฒด๋ชจ๋ธ DOM (DOM, DOMํŠธ๋ฆฌ, getElementById(), getElementByClassName(), getElementByTagName(), innerText(), innerHTML(), getAttribute(), setAttribute())

2021. 10. 22. 16:20ใ†HTML + CSS + JS

728x90

 

1. ๋ฌธ์„œ๊ฐ์ฒด๋ชจ๋ธ DOM 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ์›น ๋ฌธ์„œ์— ์ ‘๊ทผํ•˜๊ณ  ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ด ์›น ๋ฌธ์„œ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ์ •๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. 

์›น ๋ฌธ์„œ๋ฅผ ์ด๋ฃจ๋Š” ํ…์ŠคํŠธ๋‚˜ ์ด๋ฏธ์ง€, ํ‘œ ๋“ฑ์˜ ๋ชจ๋“  ์š”์†Œ๋„ ๊ฐ๊ฐ ๊ฐ์ฒด๋กœ ์ •์˜ํ•œ๋‹ค. 

์›น ๋ฌธ์„œ ์ „์ฒด๋Š” document๊ฐ์ฒด์ด๊ณ , ์‚ฝ์ž…ํ•œ ์ด๋ฏธ์ง€๋Š” image ๊ฐ์ฒด๊ฐ€ ๋œ๋‹ค.

DOM์€ ์›น ๋ฌธ์„œ์™€ ๊ทธ ์•ˆ์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ '๊ฐ์ฒด'๋กœ ์ธ์‹ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•œ๋‹ค. 

 

2. DOM ํŠธ๋ฆฌ 

์ด๋Ÿฐ ์›น ๋ฌธ์„œ๊ฐ€ ์กด์žฌํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ 

DOM ํŠธ๋ฆฌ๋Š” 

HTML -> HEAD  -> META,

                      -> TITLE 

        -> BODY  -> H1

                     -> IMG 

๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

๋ถ€๋ชจ์™€ ์ž์‹ ๊ตฌ์กฐ๋กœ ํ‘œ์‹œํ•˜๋ฉด ํŠธ๋ฆฌํ˜•ํƒœ๊ฐ€ ๋˜๋Š”๋ฐ ์ด๋ฅผ DOM ํŠธ๋ฆฌ๋ผ๊ณ ํ•œ๋‹ค. 

DOM ํŠธ๋ฆฌ์—์„œ ๊ฐ€์ง€๊ฐ€ ๊ฐˆ๋ผ์ ธ ๋‚˜๊ฐ„ ํ•ญ๋ชฉ์„ ๋…ธ๋“œ๋ผ๊ณ  ํ•˜๊ณ , DOM ํŠธ๋ฆฌ์˜ ์‹œ์ž‘๋ถ€๋ถ„์ธ HTML ๋…ธ๋“œ๋ฅผ ๋‚˜๋ฌด ๋ฟŒ๋ฆฌ์— ํ•ด๋‹นํ•œ๋‹คํ•ด์„œ ๋ฃจํŠธ ๋…ธ๋“œ๋ผ๊ณ  ํ•œ๋‹ค. 

 

DOM ๊ตฌ์„ฑ ์›์น™ 

1๏ธโƒฃ ๋ชจ๋‘” HTML ํƒœ๊ทธ๋Š” ์š”์†Œ(element) ๋…ธ๋“œ์ด๋‹ค. 

2๏ธโƒฃ HTML ํƒœ๊ทธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ…์ŠคํŠธ ๋‚ด์šฉ์€ ๋‚˜์‹ ๋…ธ๋“œ์ธ ํ…์ŠคํŠธ(text) ๋…ธ๋“œ์ด๋‹ค. 

3๏ธโƒฃ HTML ํƒœ๊ทธ์— ์žˆ๋Š” ์†์„ฑ์€ ์ž์‹ ๋…ธ๋“œ์ธ ์†์„ฑ(attribute) ๋…ธ๋“œ์ด๋‹ค. 

4๏ธโƒฃ ์ฃผ์„์€ ์ฃผ์„(comment) ๋…ธ๋“œ์ด๋‹ค. 

 

 

3. DOM ์š”์†Œ์— ์ ‘๊ทผํ•˜๊ณ  ์†์„ฑ ๊ฐ€์ ธ์˜ค๊ธฐ 

DOM ์š”์†Œ์— ์ ‘๊ทผํ•  ๋•Œ ์„ ํƒ์ž(class, id, ํƒœ๊ทธ ๋“ฑ ) ์„ ์‚ฌ์šฉํ•ด์„œ ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค. 

 

1๏ธโƒฃ id ์„ ํƒ์ž๋กœ ์ ‘๊ทผํ•˜๋Š” getElementById() ๋ฉ”์„œ๋“œ 

์š”์†Œ๋ช….getElementById("id๋ช…")

 

2๏ธโƒฃ class ๊ฐ’์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” getElementByClassName() ๋ฉ”์„œ๋“œ 

์š”์†Œ๋ช….getElementByClassName("class๋ช…")

ex) document.getElementByClassName("bright")

 

3๏ธโƒฃ ํƒœ๊ทธ์ด๋ฆ„์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” getElementByTagName() ๋ฉ”์„œ๋“œ 

์š”์†Œ๋ช….getElementByTagName("ํƒœ๊ทธ๋ช…")

ex) document.getElementByTagName("p") -> p ํƒœ๊ทธ ์‚ฌ์šฉํ•œ ๋ชจ๋“  ์š”์†Œ์— ์ ‘๊ทผ 

 

4๏ธโƒฃ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” querySelector(), querySelectorAll() ๋ฉ”์„œ๋“œ 

์•ž์— getElementById(), getElementByClassName(), getElementByTagName() ๋ฉ”์„œ๋“œ ๋ฐ˜ํ™˜๊ฐ’์€ htmlCollection ๊ฐ์ฒด์ด๋‹ค. 

์ด ๊ฐ์ฒด์—๋Š” html ์š”์†Œ๋งŒ ์ €์žฅ๋œ๋‹ค. 

๋”ฐ๋ผ์„œ DOM ํŠธ๋ฆฌ์˜ ํ…์ŠคํŠธ, ์†์„ฑ ๋…ธ๋“œ๊นŒ์ง€ ์ž์œ ๋กญ๊ฒŒ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” querySelector(), querySelectorAll() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค. 

id ์„ ํƒ์ž์ฒ˜๋Ÿผ ๋ฐ˜ํ™˜๊ฐ’์ด ํ•˜๋‚˜๋ผ๋ฉด querySelector() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , class ์„ ํƒ์ž๋‚˜ ํƒœ๊ทธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐ’์„ ํ•œ๊บผ๋ฒˆ์— ๋ฐ˜ํ™˜๋  ๊ฒฝ์šฐ์—๋Š” querySelectorAll() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

 

๋…ธ๋“œ.querySelector(์„ ํƒ์ž)

๋…ธ๋“œ.querySelectorAll(์„ ํƒ์ž ๋˜๋Š” ํƒœ๊ทธ) 

-> ์„ ํƒ์ž๋ฅผ ํ‘œ์‹œํ•  ๋•Œ class๋ฉด . ์‚ฌ์šฉ id๋ฉด # ์‚ฌ์šฉ

-> ์ด ๋ฉ”์„œ๋“œ์˜ ๋ฐ˜ํ™˜ ๊ฐ’์€ ๋…ธ๋“œ ์•„๋‹ˆ๋ฉด ๋…ธ๋“œ ๋ฆฌ์ŠคํŠธ์ด๋‹ค. 

๋…ธ๋“œ๋ฆฌ์ŠคํŠธ๋Š” ๋…ธ๋“œ๋ฅผ ํ•œ๊บผ๋ฒˆ์— ์—ฌ๋Ÿฌ ๊ฐœ ์ €์žฅํ•œ ๊ฒƒ์œผ๋กœ ๋ฐฐ์—ด๊ณผ ๋น„์Šทํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

4. innerText, innerHTML ํ”„๋กœํผํ‹ฐ 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์›น ์š”์†Œ์˜ ๋‚ด์šฉ์„ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” innerText, innerHTML ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. 

innerText ํ”„๋กœํผํ‹ฐ : ํ…์ŠคํŠธ ๋‚ด์šฉ ํ‘œ์‹œ 

innerHTML ํ”„๋กœํผํ‹ฐ : HTML ํƒœ๊ทธ๊นŒ์ง€ ๋ฐ˜์˜ํ•˜์—ฌ ํ‘œ์‹œ 

 

์š”์†Œ๋ช….innerText = ๋‚ด์šฉ

์š”์†Œ๋ช….innerHTML = ๋‚ด์šฉ 

innerText
innerHTML

 

 

5. getAttribute(), setAttribute() 

์›น ๋ฌธ์„œ๋ฅผ ๋ฌธ์„œ์— ์‚ฝ์ž…ํ•  ๋•Œ ํƒœ๊ทธ ์†์„ฑ์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด DOM ํŠธ๋ฆฌ์— ์†์„ฑ ๋…ธ๋“œ๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉด์„œ ์†์„ฑ๊ฐ’์ด ์ €์žฅ๋œ๋‹ค. 

์ด๋•Œ ์†์„ฑ์— ์ ‘๊ทผํ•˜๋ ค๋ฉด getAttribute() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์†์„ฑ์˜ ๊ฐ’์„ ๋ฐ”๊พธ๋ ค๋ฉด setAttribute()๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

 

getAttribute("์†์„ฑ๋ช…") -> ์†์„ฑ์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ ๋ฉ”์„œ๋“œ 

setAttribute("์†์„ฑ๋ช…", "๊ฐ’") -> ์›ํ•˜๋Š” ์†์„ฑ๊ฐ’์„ ์ง€์ •ํ•˜๋Š” ๋ฉ”์„œ๋“œ 

 

์•„์ด๋””๊ฐ€ cup์˜ src ์†์„ฑ 
์•„์ด๋””๊ฐ€ cup ์ธ src ์†์„ฑ์— newpic ๊ฐ’ ์ง€์ • 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90