[JavaScript] ์๋ฐ์คํฌ๋ฆฝํธ DOM (Document Obejct Model) ๊ฐ๋ณ๊ฒ ์ดํดํ๊ธฐ - 1
์๋ฐ์คํฌ๋ฆฝํธ๋ก ์น ํ์ด์ง ์ข ๋ ์์ ๋กญ๊ฒ ๋ค๋ฃจ๋ ค๋ฉด 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(์ ํ์)