๐ DOM
JavaScript๋ฅผ ์ด์ฉํด์ ์๋ฆฌ๋จผํธ์ ์์ฑ๊ฐ์ ์ป์ด ๋ด๊ฑฐ๋ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ
์ฃผ๋ชฉ์ : ์๋ฐ์คํธ๋ฆฝํธ๋ก ๋ฌธ์๋ฅผ ์ ํํ๊ณ , ์์ฑ๊ณผ ์คํ์ผ์ ์ ์ฉ ํ ์ ์๋ค.
๋จ์ : ์๋ฐ์คํธ๋ฆฝํธ ๋ ๊ฐ๋ฐ์ IE ์ดํ ๋ฒ์ ๊ณผ ๊ธฐํ ๋ธ๋ผ์ฐ์ ๊ฐ์ ํธํ์ฑ์ด ๋จ์ด์ง๋ค.
๐ ์ ํ์
์ง์ ์ ํ์, ์๊ฑฐ๋ฆฌ์ ํ์ : id, class, ํผ/์์๋ช (ํ๊ทธ๋ช )
์ธ์ ๊ด๊ณ์ ํ์ : parentNode, childNodes, firstchild, children, previousSibling,nextSibling
Element ์ ํ
- ํ๊ทธ ์ด์ฉ : getElementByTagName('ํ๊ทธ๋ช ')
- id ์ด์ฉ : getElementById('์์ด๋๋ช ')
- class ์ด์ฉ : getElementsByclassName('ํด๋์ค๋ช ')
- selector ์ด์ฉ:
querySelector('#์์ด๋๋ช /.ํด๋๋ช /ํ๊ทธ๋ช ') -> ์์ ํ๊ฐ๋ง ๊ฐ์ ธ์จ๋ค
querySelectorAll('#์์ด๋๋ช /.ํด๋๋ช /ํ๊ทธ๋ช ') -> ํด๋น๋๋๊ฑฐ ๋ค ๊ฐ์ ธ์จ๋ค.
๐ DOM ์ผ๋ก HTML ์กฐ์ํ๊ธฐ
- CREATE - createElement() ์์ฑํ๊ธฐ
const tweetDiv = document.createElement('div') //document.creteElement(ํ๊ทธ๋ช )
div ์์๋ฅผ ์์ฑ ํ์์ง๋ง ํ์ฌ ๊ณต์ค์ ๋์ด์ง ์ํ์ ๊ฐ๋ค.
- APPEND - append(), appendChild() ์ถ๊ฐํ๊ธฐ
document.body.append(tweetDiv) // ๋ถ๋ชจ๋ ธ๋.append(๋ฃ์์์)
๊ณต์ค์ ๋์ด์ ธ ์๋ ์์ฑ๋ div๋ฅผ ๋ถ๋ชจ ์์์๊ฒ ์ฐ๊ฒฐ์ ํด์ฃผ๊ธฐ ์ํด append ํด์ค๋ค.
append์๋ ๋๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.
append(), appendChild() ๋๊ฐ์ง์ ์ฐจ์ด์ ์ ์์๋ณด์
append() ์ฌ์ฉ์ ๊ถ์ฅํ๋ค.
+preoend()๋ฉ์๋๋ ์์ชฝ์ ์ถ๊ฐ ํ๋ ๊ฒ์ด๋ค.
- READ - querySelector, querySelectorAll
const oneTweet = document.querySelector('.tweet')
querySelector('#์์ด๋๋ช /.ํด๋๋ช /ํ๊ทธ๋ช ') -> ์์ ํ๊ฐ๋ง ๊ฐ์ ธ์จ๋ค
querySelectorAll('#์์ด๋๋ช /.ํด๋๋ช /ํ๊ทธ๋ช ') -> ํด๋น๋๋๊ฑฐ ๋ค ๊ฐ์ ธ์จ๋ค.
- UPDATE - textContent, classList.add
oneDiv.textContent = 'dev'; // ๊ฐ์ ๋ฃ๋๊ฒ oneDiv.classList.add('tweet') //์ ๋ฐ์ดํธ
//textContent -> textContent์ ๊ฐ์ ์๋ณ์ ๋ ธ๋์ ๋ด๋ถ ์ฝํ ์ธ ๋ฅผ text/plain์ผ๋ก ํ์ฑ(Parsing)ํ ๊ฒฐ๊ณผ์ ๋๋ค. ์ฆ, ํด๋น ์์ ๋ด๋ถ์ ์์ ํ ์คํธ(raw text) ์ ๋๋ค. ๊ทธ๋์ ๋ค๋ฅธ ํ๋กํผํฐ๋ค์ ๋นํด ํ์ฑ์ด ๋น ๋ฆ ๋๋ค.
//innerText -> innerText ํ๋กํผํฐ์ ๊ฐ ๋ํ text/plain์ผ๋ก ํ์ฑํ ๊ฒฐ๊ณผ์ ๋๋ค. ๊ทธ๋์ innerText๋ textContent์ ํผ๋ํ๊ธฐ ์ฌ์ฐ๋, ์ค์ํ ์ฐจ์ด์ ์ด ์์ต๋๋ค. innerText์ ๊ฐ์ ์์ ํ ์คํธ๊ฐ ์ต์ข ์ ์ผ๋ก (ํ๋ฉด์) ๋ ๋๋ง ๋ ๋ชจ์ต, ์๋ฅผ ๋ค์ด ๋ด์ฉ ์จ๊น์ด๋ ์ค๋ฐ๊ฟ ๊ฐ์ด ์๋์ ์ธ ์คํ์ผ๋ง์ด ๋ค์ด๊ฐ ํ์ ๋ชจ์ต์ด ๋ฉ๋๋ค.
//innerHTML -> innerHTML ํ๋กํผํฐ์ ๊ฐ์ text/html์ผ๋ก ํ์ฑํ ๊ฒฐ๊ณผ์ ๋๋ค. ๊ทธ๋์ ์๋์ ์ผ๋ก ํ์ฑ์ด ๋๋ฆฝ๋๋ค. ๋ํ ๋ณด์์ ์ทจ์ฝํฉ๋๋ค.
- DELETE - remove, removeChild
tweetDiv.remove()
์์ ์๋ฆฌ๋จผํธ๋ฅผ ์ง์ฐ๋ ๋ฐฉ๋ฒ์ ์ด๋ป๊ฒ ๋ ๊น ?
document.querySelector('#container').innerHTML = '';
์์์ฒ๋ผ ํ๋ฉด ๊ฐ๋จํ์ง๋ง ๋ณด์์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
removeChild๋ ์์ ์๋ฆฌ๋จผํธ๋ฅผ ์ง์ ํด์ ์ญ์ ํ๋ ๋ฉ์๋ ์ ๋๋ค. ๋ชจ๋ ์ญ์ ํ๊ธฐ ์ํด์ while๋ฌธ์ ํ์ฉ ํฉ๋๋ค.const container = document.querySelector('#container'); while (container.children.length > 1) { container.removeChild(container.lastChild); }
์์ ์๋ฆฌ๋จผํธ๊ฐ ์์๋ ๊น์ง ์ง์ฐ๊ฒ ๋ค๋ ์ฝ๋ ์ ๋๋ค.