TIL/JavaScript

[TIL] DOM(Document Object Model) ์ด๋ž€?

"์œ ๋‹ˆ" 2022. 9. 1. 18:56

 

 

 

๐ŸŒท DOM(Document Object Model) ๋ฌธ์„œ๊ฐ์ฒด๋ชจ๋ธ์— ๋Œ€ํ•˜์—ฌ 


 

DOM์— ๋Œ€ํ•ด ๊ฐ•์กฐํ•˜๋Š” ๋ถ„๋“ค์ด ๊ฝค ์žˆ์–ด์„œ ์—ด์‹ฌํžˆ ๊ณต๋ถ€ํ•ด๋ณด๋ ค ํ–ˆ์ง€๋งŒ 

์ฒ˜์Œ ์ ‘ํ–ˆ์„ ๋• ์ด๊ฒŒ ๋ชฐ๊นŒ.. ๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ..? ๋‹จ์–ด ํ•˜๋‚˜๋ถ€ํ„ฐ ์–ด๋ ค์›Œ์š”.. ๊ณต๋ถ€์˜ ์„ธ๊ณ„๋ž€ ๋์ด ์—†๋‹ค(?)

 

๊ทธ๋ž˜์„œ ์‚ด์ง ์ œ๊ปด ๋†“๊ณ  ๋‹ค๋ฅธ ๊ฐ•์˜ ๋“ค์„ ๋“ฃ๋‹ค๊ฐ€ ์˜ค๋Š˜ ๋‹ค์‹œ ๊ณต๋ถ€๋ฅผ ํ–ˆ๋Š”๋ฐ ์ œ๋ฒ• ์ดํ•ด๊ฐ€ ๋˜์–ด์„œ ์ •๋ฆฌํ•ด ๋ณด๋ คํ•œ๋‹ค ๐Ÿ˜Ž

 

 

 

โœ”๏ธ DOM์˜ ๊ตฌ์กฐ๋Š” ๋‚˜๋ฌด์ฒ˜๋Ÿผ ์ƒ๊น€ ใ…ก DOM ํŠธ๋ฆฌ๋ผ๊ณ ๋„ ํ•œ๋‹ค 

 

Live DOM Viewer  

์•„๋ž˜ ์‚ฌ์ดํŠธ์— ๋“ค์–ด๊ฐ€์„œ ์ด๊ฒƒ์ €๊ฒƒ ์‹ค์Šตํ•ด๋ณด๋ฉด ์ฌ๋” ๊ฐ์ด ์žกํž˜..

https://software.hixie.ch/utilities/js/live-dom-viewer/

 

Live DOM Viewer

Live DOM Viewer ... Script not loaded. This script puts a function w(s) into the global scope of the test page, where s is a string or object to output to the log. Some files are available for testing purposes, notably "image" is an image. image and image.

software.hixie.ch

 

 

 

โœ”๏ธ HTML์€ ์ •์ ์ธ text ์ด๋ฏ€๋กœ JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น ๋ฌธ์„œ์˜ ์ผ๋ถ€๋ฅผ ๋™์ ์œผ๋กœ ๋งŒ๋“ ๋‹ค

(DOM์˜ ๋ชฉ์ ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๊ฒ ์ฌฌ)

 

 

 

โœ”๏ธ DOM ์š”์†Œ์— ์ ‘๊ทผํ•˜๊ธฐ

 

 

1๏ธโƒฃ DOM ์š”์†Œ๋ฅผ id ์„ ํƒ์ž๋กœ ์ ‘๊ทผํ•˜๋Š” ํ•จ์ˆ˜ ใ…ก getElementById()

 

์ œ๋กœ์ดˆ๋‹˜ ๊ฒŒ์ž„๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉด์„œ ์ด ํ•จ์ˆ˜๋ฅผ ์ฒ˜์Œ ์ ‘ํ•ด๋ดค๋˜ ๋‚˜..! ์ด์ œ ์ฃ„๊ธˆ ์ดํ•ด๊ฐ€๊ฐ€๋Š” ํ•จ์ˆ˜์ด๋‹ค

 

h1 ์—๋Š” id ๊ฐ’์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— id ์„ ํƒ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ DOM ์š”์†Œ์— ์ ‘๊ทผํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ๋ฐ”๋กœ

getElementById("heading") 

**console ์ฐฝ์— ๋„ฃ์–ด๋ณด๋ฉด id ๊ฐ’์ด heading์ธ ์š”์†Œ๋ฅผ ์ถœ๋ ฅํ•  ๊ฒƒ์ด๋‹น 

 

 

 

 

 

2๏ธโƒฃ DOM ์š”์†Œ๋ฅผ class๊ฐ’์œผ๋กœ ์ฐพ์•„๋‚ด๋Š” ํ•จ์ˆ˜ ใ…ก getElementsByClassName() 

 

By ์•ž์— Elements๋ฅผ ๋ณด๋ฉด 's'๊ฐ€ ๋ถ™์–ด ์žˆ๋‹ค 

class ์„ ํƒ์ž๋Š” id ์„ ํƒ์ž์™€ ๋‹ค๋ฅด๊ฒŒ ์›น ๋ฌธ์„œ ์•ˆ์—์„œ ์—ฌ๋Ÿฌ ๋ฒˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ! ๊ทธ๋ž˜์„œ 2๊ฐœ ์ด์ƒ์˜ ์›น ์š”์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค!

 

class ๊ฐ’์ด "accent" ์ธ ๊ฒƒ ๋‘๊ฐœ๊ฐ€ ์žˆ์ง€์š” ์˜ค๋Š˜์€๊ณผ ํ† ๋ผ๊ตฌ๋ฆ„ 

getElementsByClassName("accent")

์ฝ˜์†”์ฐฝ์— ์ž…๋ ฅํ•ด ๋ณด๋ฉด ์˜ค๋Š˜์€, ํ† ๋ผ๊ตฌ๋ฆ„ ์š”์†Œ์— ๋ชจ๋‘ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค 

1๊ฐœ์˜ ์š”์†Œ์—๋งŒ ์ ‘๊ทผํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค 

getElementsByClassName("accent")[0] ์ด๋ ‡๊ฒŒ !!

 

 

 

 

3๏ธโƒฃ DOM ์š”์†Œ๋ฅผ ํƒœ๊ทธ ์ด๋ฆ„์œผ๋กœ ์ฐพ์•„๋‚ด๋Š” ํ•จ์ˆ˜ ใ…ก getElementsByTagName()

 

id๋‚˜ class ์„ ํƒ์ž๊ฐ€ ์—†์„๋• ์ด ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์†Œ์— ์ ‘๊ทผํ•˜๊ธฐ (์—ฌ๊ธฐ์—๋„ 's'๊ฐ€ ๋ถ™์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ์š”์†Œ๋ฅผ ๋ชจ๋‘ ์ฐพ์•„ ์ ‘๊ทผํ•œ๋‹ค) 

getElementsByTagName("h2") ์ด๋ ‡๊ฒŒ ์ ‘๊ทผํ•˜๋ฉด h2์˜ ๋‘๊ฐ€์ง€ ์š”์†Œ๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค 

 

์ด๋•Œ๋„ ํ•œ ๊ฐœ์˜ ์š”์†Œ์—๋งŒ ์ ‘๊ทผํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค 

getElementsByTagName("h2")[1] => NewJeans์—๋งŒ ์ ‘๊ทผ !!

 

 

 

4๏ธโƒฃ DOM ์š”์†Œ๋ฅผ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ฐพ์•„์ฃผ๋Š” ํ•จ์ˆ˜ ใ…ก querySelector(), querySelectorAll()

 

์ด ํ•จ์ˆ˜๋Š” ๋งŽ์ด ๋ณด์…จ์ฃ ? (์•„๋Š”์ฒ™) ํ›„ํ›„.. 

id, class ๊ฐ’์„ ์‚ฌ์šฉํ•ด๋„ ๋˜๊ณ  ํƒœ๊ทธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ด๋„ ๋˜๋Š” ํ•จ์ˆ˜์ด๋‹ค 

์ž…๋ ฅํ•  ๋•Œ : class ๊ฐ’ ์•ž์—๋Š” ๋งˆ์นจํ‘œ(.), id๊ฐ’ ์•ž์—๋Š” ์ƒต(#)์„ ๋ถ™์ด๋ฉด ๋œ๋‹ค ํƒœ๊ทธ๋Š” ๊ธฐํ˜ธ ์—†์ด ํƒœ๊ทธ ์ด๋ฆ„๋งŒ ์‚ฌ์šฉ

 

getElementById() ํ•จ์ˆ˜์™€ querySelector() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋‹ค๋ฅธ ์ ์€ ์•„๋ž˜์™€ ๊ฐ™์•„์š”

 

getElementById("container")

querySelector("#container") 

 

๋‹ค๋ฅธ์ ์„ ์•„์‹œ๊ฒ ์ฐŒ์˜ค? (์•„๋Š”์ฒ™...) ๋…œ๋…œ..