๐ ์ค๋ ๋ฐฐ์ด ๋ด์ฉ
1.DOM ๊ฐ๋ , ๊ตฌ์กฐ
2. DOM์ javascript๋ก ์กฐ์ํ์ฌ C,R,U,D
3. innerHTML, textContent ์ดํด
: ๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ, ์ฆ DOM์ ์น ํ์ด์ง(HTML์ด๋ XML ๋ฌธ์)์ ์ฝํ ์ธ ๋ฐ ๊ตฌ์กฐ, ๊ทธ๋ฆฌ๊ณ ์คํ์ผ ์์๋ฅผ ๊ตฌ์กฐํ ์์ผ ํํํ์ฌ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ํด๋น ๋ฌธ์์ ์ ๊ทผํ์ฌ ์ฝ๊ณ ์กฐ์ํ ์ ์๋๋ก API๋ฅผ ์ ๊ณตํ๋ ์ผ์ข ์ ์ธํฐํ์ด์ค์ ๋๋ค. ์ฆ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ ์คํฌ๋ฆฝํ ์ธ์ด๊ฐ ์ฝ๊ฒ ์น ํ์ด์ง์ ์ ๊ทผํ์ฌ ์กฐ์ํ ์ ์๊ฒ๋ ์ฐ๊ฒฐ์์ผ์ฃผ๋ ์ญํ ์ ๋ด๋นํฉ๋๋ค.
DOM์ ์น ํ์ด์ง, ์ฆ HTML ๋ฌธ์๋ฅผ ๊ณ์ธต์ ๊ตฌ์กฐ์ ์ ๋ณด๋ก ํํํ๋ฉฐ, ์ด๋ฅผ ์ ์ดํ ์ ์๋ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ์ด๊ธฐ๋ ํฉ๋๋ค. ๋ฐ๋ผ์ HTML DOM, ํน์ HTML DOM Tree๋ก ๋ถ๋ฅด๊ธฐ๋ ํฉ๋๋ค.
ํธ๋ฆฌ ์๋ฃ ๊ตฌ์กฐ๋ก ๊ตฌ์ถ์ด ๋๊ธฐ ๋๋ฌธ์, HTML ๋ฌธ์๋ ์ต์ข ์ ์ผ๋ก ํ๋์ ์ต์์ ๋ ธ๋(root ๋ ธ๋)์์ ์์ํด ์์ ๋ ธ๋๋ค์ ๊ฐ์ง๋ฉฐ, ์๋๋ก๋ง ๋ป์ด๋๊ฐ๋ ๊ตฌ์กฐ๋ก ๋ง๋ค์ด์ง๊ฒ ๋ฉ๋๋ค.
document ๋ ธ๋๊ฐ ์ต์์ ๋ ธ๋๊ฐ ๋๊ณ , ๋ฐ์ผ๋ก element ๋ ธ๋๊ฐ ์ค๋ฉฐ, ์ด์ด text ๋ ธ๋์ attribute ๋ ธ๋๊ฐ ์ค๋ ๊ณ์ธต์ ์ธ ๊ตฌ์กฐ์์ ์ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ ธ๋ ํ์ ์๋ ์ด 12๊ฐ๊ฐ ์๋๋ฐ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์์์๋ ๋ช ์๊ฐ ๋์ด ์๋ฏ ์ด 4๊ฐ์ง์ ๋ ธ๋๊ฐ ์์ต๋๋ค.
DOM Tree์์ ์ต์์ ๋ฃจํธ ๋ ธ๋๋ฅผ ๋ํ๋ด๋ฉฐ, document ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํต๋๋ค. HTML ๋ฌธ์ ์ ์ฒด๋ฅผ ๋ํ๋ด๋ ๋ ธ๋์ด๊ธฐ๋ ํฉ๋๋ค. window ๊ฐ์ฒด์ document ํ๋กํผํฐ๋ก ๋ฐ์ธ๋ฉ(์ฐ๊ฒฐ)์ด ๋์ด ์์ด window.document , document๋ก ์ฐธ์กฐํด ์ฌ์ฉํ ์ ์์ต๋๋ค. HTML ๋ฌธ์์ ์ด ๋ฌธ์ ๋ ธ๋๋ ์ค๋ก์ง 1๊ฐ๋ง ์กด์ฌํฉ๋๋ค.
๋ชจ๋ HTML ์์ (body, h2, div ๋ฑ)๋ ์ด ์์ ๋ ธ๋์ ๋๋ค. ์์ฑ ๋ ธ๋๋ฅผ ๊ฐ์ง ์ ์๋ ์ ์ผํ ๋ ธ๋๋ก์, ๋ถ๋ชจ-์์ ๊ด๊ณ๋ฅผ ๊ฐ์ง๊ฒ ๋๊ธฐ ๋๋ฌธ์ ๊ณ์ธต์ ๊ตฌ์กฐ๋ฅผ ์ด๋ฃฐ ์ ์๊ฒ ๋ฉ๋๋ค.
๋ชจ๋ HTML ์์์ ์์ฑ์ ์ด ์์ฑ ๋ ธ๋์ ๋๋ค. ์์ ๋ ธ๋์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ถ๋ชจ ๋ ธ๋๊ฐ ์๋ ํด๋น ๋ ธ๋์ ์ฐ๊ฒฐ(๋ฐ์ธ๋ฉ)์ด ๋์ด ์์ต๋๋ค.
HTML ๋ฌธ์์ ๋ชจ๋ ํ ์คํธ๋ ์ด ํ ์คํธ ๋ ธ๋๋ผ ํด๋ ๊ณผ์ธ์ด ์๋๋๋ค. ํ ์คํธ ๋ ธ๋๋ ์ ๋ณด๋ฅผ ํํํ๋ฉฐ, ๊ฐ์ฅ ๋ง์ง๋ง์ ์์นํ๋ ์์ ๋ ธ๋์ด๊ธฐ ๋๋ฌธ์ ์์ฌ๊ท๋ฅผ ๋ฎ์๋ค ํด ๋ฆฌํ ๋ ธ๋๋ผ๊ณ ๋ถ๋ฆฌ๊ธฐ๋ ํฉ๋๋ค.
์ด 4๊ฐ์ง ๋ ธ๋๋ค์ด ์กด์ฌํจ์ผ๋ก์จ ์คํฌ๋ฆฝํ ์ธ์ด๊ฐ ์นํ์ด์ง์ ์ ๊ทผํ๊ณ ์กฐ์ํ ์ ์๊ฒ ๋ฉ๋๋ค. ํนํ ๋ฐ์ดํฐ ๊ฒ์ํ๊ธฐ๊ฐ ๋น ๋ฅธ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ์ด๋ค์ ธ ์๊ธฐ ๋๋ฌธ์ ์ด ์ ๊ทผํ๊ณ ์กฐ์ํ์ฌ ์ ๋ฐ์ดํธ๋ฅผ ํ๋ ์๋๋ ๋น ๋ฅธ ํธ์ ๋๋ค.
ํ๋กํผํฐ(property) : DOM ๊ฐ์ฒด์ ๋ฉค๋ฒ ๋ณ์์ ๋๋ค. HTML ํ๊ทธ์ ์์ฑ์ ๋ฐ์ํฉ๋๋ค.
๋ฉ์๋(method) : DOM ๊ฐ์ฒด์ ๋ฉค๋ฒ ํจ์์ ๋๋ค. HTML ํ๊ทธ๋ฅผ ์ ์ดํฉ๋๋ค.
์ปฌ๋ ์ (collection) : ์ ๋ณด๋ฅผ ์งํฉ์ ์ผ๋ก ํํํ๋ ์ผ์ข ์ ๋ฐฐ์ด์ ๋๋ค. ์๋ฅผ ๋ค์ด children ์ปฌ๋ ์ ์ DOM ๊ฐ์ฒด์ ๋ชจ๋ ์์ DOM ๊ฐ์ฒด์ ๋ํ ์ฃผ์๋ฅผ ๊ฐ์ง๋๋ค.
์ด๋ฒคํธ ๋ฆฌ์ค๋(event listener) : HTML ํ๊ทธ์ ์์ฑ๋ ์ด๋ฒคํธ ๋ฆฌ์ค๋(onclick, onchange ๋ฑ)๋ค์ ๊ทธ๋๋ก ๊ฐ์ง๋๋ค.
์คํ์ผ(style) : ์ด ํ๋กํผํฐ๋ฅผ ํตํด HTML ํ๊ทธ์ ์ ์ฉ๋ CSS ์คํ์ผ ์ํธ์ ์ ๊ทผ ๊ฐ๋ฅํฉ๋๋ค.
document ๊ฐ์ฒด๋ฅผ ํตํด์ HTML element๋ฅผ ๋ง๋ค๊ณ (CREATE), ์กฐํํ๊ณ (READ), ๊ฐฑ์ ํ๊ณ (UPDATE), ์ญ์ ํ๋(DELETE) ๋ฐฉ๋ฒ์ด ์๋ค.
โ CREATE
โ
APPEND
DOM์ผ๋ก ์์ฑ๋ HTML element๋ฅผ ๋ถ๋ชจ ๋
ธ๋์ ํฌํจํ๋ ๋ฐฉ๋ฒ์ด๋ค.
โ
READ
DOM์ผ๋ก HTML element๋ฅผ ์กฐํํ๋ ๋ฐฉ๋ฒ์ด๋ค.
querySelector์ ์ฒซ ๋ฒ์งธ ์ธ์๋ก ์
๋ ํฐ๋ฅผ ์ ๋ฌํ์ฌ element์ ์ ๋ณด๋ฅผ ์กฐํํ ์ ์์ผ๋ฉฐ, HTML ์์('div'), id('#tweetList'), class('.tweet') ์ธ ๊ฐ์ง๊ฐ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ค.
์๋๋ get์ผ๋ก ์์ํ๋ DOM ์กฐํ ๋ฉ์๋์ด๋ค.
CREATE์์ ์์ฑํ
โ UPDATE
DOM์ผ๋ก HTML Element๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ์ด๋ค.
setAttribute()๋ฅผ ์ด์ฉํด ์์ฑํ ์์์ attribute๋ฅผ ์ค์ ํด์ค ์ ์๋ค.
โ
DELETE
: ์ญ์ ํ๋ ค๋ ์์์ ์์น๋ฅผ ์๊ณ ์๋ ๊ฒฝ์ฐ
: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๋ ๋ ธ๋์ ๋ชจ๋ ์์๋ฅผ ๋ฐํํ๋ค.