๐Ÿ“š Study/JS, JQuery

[JavaScript] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ DOM (Document Obejct Model) ๊ฐ€๋ณ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ - 1

kkh1902 2022. 3. 13. 18:58
728x90
๋ฐ˜์‘ํ˜•

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์›น ํŽ˜์ด์ง€ ์ข€ ๋” ์ž์œ ๋กญ๊ฒŒ ๋‹ค๋ฃจ๋ ค๋ฉด DOM์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

 

๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ (DOM)

๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ(Document Object Model, DOM)์€ ๋ง ๊ทธ๋Œ€๋กœ ์›น ํŽ˜์ด์ง€ ๋‚ด์˜ ๋ชจ๋“  ์ฝ˜ํ…์ธ ๋ฅผ ๊ฐ์ฒด๋กœ ๋‚˜ํƒ€๋‚ด ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋ฉด ์›น ํŽ˜์ด์ง€๋ฅผ document๋ผ๊ณ  ๋ถ€๋ฅด๊ณ , document๋ฅผ ์ž์œ ๋กญ๊ฒŒ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด์„œ ๊ฐ์ฒดํ™” ํ•˜๊ณ ์ž ๊ตฌํ˜„๋œ ๊ฐœ๋…์ด ๊ฒฐ๊ตญ์ด DOM์ด๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค.

๊ทธ๋ฆฌ๊ณ  HTML ํƒœ๊ทธ์™€ ๊ธ€์ž, ์†์„ฑ ๋“ฑ document์˜ ๋‹ด๊ฒจ์žˆ๋Š” ๋ชจ๋“  ์š”์†Œ๋“ค์„ ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ๊ฐ์ฒดํ™” ํ•œ ๋‹จ์œ„๋ฅผ ๊ฐ€๋ฆฌ์ผœ ๋…ธ๋“œ(Node)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

์•„๋ฌดํŠผ, ๊ฒฐ๊ตญ DOM์€ ์›น ํŽ˜์ด์ง€๋ฅผ ๊ฐ์ฒดํ™” ํ•œ ๊ฐœ๋…์ด๊ณ , ์ด ์›นํŽ˜์ด์ง€์˜ ๊ฐ€์žฅ ์ƒ๋‹จ ์ง„์ž…์ ์ด ๋ฐ”๋กœ document ๊ฐ์ฒด์ด๋‹ค.

document ๊ฐ์ฒด๋Š” ์ „์—ญ ๊ฐ์ฒด์ธ window ๊ฐ์ฒด์˜ ๋ฐ”๋กœ ์•„๋ž˜ ์žˆ๋Š”๋ฐ, window ๊ฐ์ฒด๋Š” ์•ž์— window๋ฅผ ์ƒ๋žตํ•ด๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” document์— ๋ฐ”๋กœ ์ ‘๊ทผํ•ด์„œ ๋ฉ”์„œ๋“œ๋‚˜ ํ”„๋กœํผํ‹ฐ๋“ค์„ ํ™œ์šฉํ•œ๋‹ค.

window.document
document // window๋Š” ์ƒ๋žต๋  ์ˆ˜ ์žˆ๋‹ค.

 

 

Document ๊ฐ์ฒด

window๊ฐ์ฒด๊ฐ€ ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์„ ๋Œ€๋ณ€ํ•˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด document ๊ฐ์ฒด๋Š”, ๋ธŒ๋ผ์šฐ์ € ๋‚ด์—์„œ ์ปจํ…์ธ ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์›น ํŽ˜์ด์ง€ ์ž์ฒด๋ฅผ ๋Œ€๋ณ€ํ•œ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ์›น ํŽ˜์ด์ง€๊ฐ€ document๊ณ , ์ด๋ฅผ ๊ฐ์ฒดํ™”ํ•œ ๊ฒƒ์ด document ๊ฐ์ฒด๋ผ๊ณ  ์ƒ๊ฐํ•ด๋ณผ ์ˆ˜๋„ ์žˆ๊ฒ ๋‹ค.

 

 

Document ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ

document ๊ฐ์ฒด๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์›นํŽ˜์ด์ง€์˜ ์ƒํƒœ์™€ ๋ชจ๋“  HTML ํƒœ๊ทธ๋“ค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ”„๋กœํผํ‹ฐ ๋„ค์ž„์— ํƒœ๊ทธ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๋ฉด ํ•ด๋‹น ํƒœ๊ทธ์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

document.documentElement // <html> ํƒœ๊ทธ ๋ฐ˜ํ™˜
document.head // <head> ํƒœ๊ทธ ๋ฐ˜ํ™˜
document.title // <title> ํƒœ๊ทธ ๋ฐ˜ํ™˜
document.body // <body> ํƒœ๊ทธ ๋ฐ˜ํ™˜
document.links // href ์†์„ฑ์ด ์žˆ๋Š” <a> ํƒœ๊ทธ ๋ฐ˜ํ™˜
document.images // <img> ํƒœ๊ทธ ๋ฐ˜ํ™˜
document.forms // <form> ํƒœ๊ทธ ๋ฐ˜ํ™˜
document.scripts // <script> ํƒœ๊ทธ ๋ฐ˜ํ™˜

์›นํŽ˜์ด์ง€์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ ํ”„๋กœํผํ‹ฐ๋“ค๋„ ์žˆ๋‹ค.

document.doctype // ์›น ํŽ˜์ด์ง€์˜ ๋ฌธ์„œ ํ˜•์‹์„ ๋ฐ˜ํ™˜
document.readyState // ์›น ํŽ˜์ด์ง€์˜ ๋กœ๋”ฉ ์ƒํƒœ๋ฅผ ๋ฐ˜ํ™˜
document.documentURI //  ์›น ํŽ˜์ด์ง€์˜ URI๋ฅผ ๋ฐ˜ํ™˜
document.baseURI // ์›น ํŽ˜์ด์ง€์˜ ์ ˆ๋Œ€ URI๋ฅผ ๋ฐ˜ํ™˜
document.URL // ์›น ํŽ˜์ด์ง€์˜ ์™„์ „ํ•œ URL ์ฃผ์†Œ๋ฅผ ๋ฐ˜ํ™˜
document.referrer // ๋งํฌ(linking)๋˜์–ด ์žˆ๋Š” ๋ฌธ์„œ์˜ URI๋ฅผ ๋ฐ˜ํ™˜
document.domain // ์›น ํŽ˜์ด์ง€๊ฐ€ ์œ„์น˜ํ•œ ์„œ๋ฒ„์˜ ๋„๋ฉ”์ธ์„ ๋ฐ˜ํ™˜
document.cookie // ์›น ํŽ˜์ด์ง€์˜ ์ฟ ํ‚ค๋ฅผ ๋ฐ˜ํ™˜
document.lastModified // ์›น ํŽ˜์ด์ง€์˜ ๋งˆ์ง€๋ง‰ ๊ฐฑ์‹  ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„์„ ๋ฐ˜ํ™˜
document.inputEncoding // ์›น ํŽ˜์ด์ง€์˜ ๋ฌธ์„œ ์ธ์ฝ”๋”ฉ ํ˜•์‹์„ ๋ฐ˜ํ™˜

 

 

HTML ํƒœ๊ทธ (๋…ธ๋“œ) ์„ ํƒํ•˜๊ธฐ

๋ฟ ๋งŒ ์•„๋‹ˆ๋ผ ๋ฉ”์†Œ๋“œ๋“ค์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์›น ํŽ˜์ด์ง€ ๋‚ด์˜ ํƒœ๊ทธ๋“ค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

// ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌํ•œ ํƒœ๊ทธ์ด๋ฆ„์„ ๊ฐ€์ง„ ๋ชจ๋“  ํƒœ๊ทธ๋“ค์„ ๋ฐ˜ํ™˜(๋ฐฐ์—ด)
document.getElementsByTagName(ํƒœ๊ทธ์ด๋ฆ„)

// ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌํ•œ ID๋ฅผ ๊ฐ€์ง„ ํƒœ๊ทธ๋ฅผ ๋ฐ˜ํ™˜
document.getElementById(์•„์ด๋””)

// ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌํ•œ ํด๋ž˜์Šค ์ด๋ฆ„์„ ๊ฐ€์ง„ ๋ชจ๋“  ํƒœ๊ทธ๋“ค์„ ๋ฐ˜ํ™˜(๋ฐฐ์—ด)
document.getElementsByClassName(ํด๋ž˜์Šค์ด๋ฆ„)

// ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌํ•œ name ์†์„ฑ์„ ๊ฐ€์ง„ ํƒœ๊ทธ๋ฅผ ๋ฐ˜ํ™˜
document.getElementByName(name์†์„ฑ๊ฐ’)

// ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌํ•œ ์„ ํƒ์ž์— ๋งž๋Š” ์ฒซ ๋ฒˆ์งธ ํƒœ๊ทธ๋ฅผ ๋ฐ˜ํ™˜
document.querySelector(์„ ํƒ์ž)

// ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌํ•œ ์„ ํƒ์ž์— ๋งž๋Š” ๋ชจ๋“  ํƒœ๊ทธ๋“ค์„ ๋ฐ˜ํ™˜(๋ฐฐ์—ด)
document.querySelectorAll(์„ ํƒ์ž)

 

728x90
๋ฐ˜์‘ํ˜•