๋ ธ๋ ๊ฐ์ฒด๋ค๋ก ๊ตฌ์ฑ๋ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ
์น ํ๋ฉด์
๋์ ์ํธ์์ฉ
์ ์ํด ์น ์ฝํ ์ธ ์์ถ๊ฐ
,์์
,์ญ์
,์ด๋ฒคํธ ์ฒ๋ฆฌ
๋ฑ์ ๋ค๋ฃฌ๋ค.
JavaScript ์ธ์ด์ ์ผ๋ถ๊ฐ ์๋๋ผ ์น์ฌ์ดํธ๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ์ฌ์ฉ๋๋
Web API(Application Programming Interface)
์ด๋ค.
DOM์
document
๊ฐ์ฒด๋ฅผ ํตํด HTML(root document)์ ์ ๊ทผํ๋ค.
(window
๋ ๋ธ๋ผ์ฐ์ ์ ์ฐฝ์ด๊ณdocument
๋ ๋ธ๋ผ์ฐ์ ์ฐฝ์ HTML ๋ฌธ์ ๊ฐ์ฒด, window๊ฐ document๋ฅผ ํฌํจ)
HTML ๋ฌธ์๋ ๊ฐ๊ฐ์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ๋๋ค. ์๋์ ์ฝ๋๋ฅผ ํตํด ๊ณ์ธต ๊ตฌ์กฐ๊ฐ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋๋์ง ํ์ธํด๋ณด์.
<body>
<div id="container">
<h2>boxes</h2>
<div class="box">box1</div>
<div class="box">box2</div>
<div class="box">box3</div>
</div>
<div id="container2">
<h2>cats</h2>
<div class="cat">cat1</div>
<div class="cat">cat2</div>
<div class="cat">cat3</div>
</div>
</body>
์์ ์ฝ๋๋ฅผ ๋ณด์. ๊ฐ์ฅ ์๋จ์ body ํ๊ทธ๊ฐ ์กด์ฌํ๋ค. ๊ฐ์ฅ ์๋จ์ ์์นํ๋ body ํ๊ทธ๋ฅผ ์ค์ฌ์ผ๋ก ๊ฐ๊ฐ์ ํ๊ทธ๋ค์ ๊ธฐ์ค์ผ๋ก ํธ๋ฆฌ ํํ๋ฅผ ํ์ฑํจ์ ์ ์ ์๋ค.
(๋ถํ์์ div ํ๊ทธ์ container, container2์ ๊ดํธ๋ ์ดํด๋ฅผ ์ํด ๊ตฌ๋ถํด ๋ ๊ฒ์ด๋ค.)
ํธ๋ฆฌ์ ์๋ ๋ ธ๋๋ ๋ชจ๋ ๊ฐ์ฒด์ ํด๋นํ๋ค.
DOM์ ํธ๋ฆฌ ํํ๋ฅผ ๋๋ฏ๋ก
DOM ํธ๋ฆฌ
๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค.
๋ธ๋ผ์ฐ์ ๋
DOM
์ ์ฐธ๊ณ ํ์ฌ ํ๋ฉด์ ์น ์ฝํ ์ธ ๋ฅผ๋ ๋๋ง
ํ๋ค.
์น ๋ธ๋ผ์ฐ์ ๋ HTML ๋ฌธ์๋ฅผ ํด์ํ๊ณ , ํ๋ฉด์ ํตํด ํด์๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ฅฐ๋ค
์ด๋ฌํ ๊ณผ์ ์ ๋ ๋๋ง
์ด๋ผ๊ณ ํ๋ค.
์ฆ, ์ค์๊ฐ์ผ๋ก ์น์ฌ์ดํธ๊ฐ ๊ทธ๋ ค์ง๋ ๊ณผ์ ์ ์น ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ๊ณผ์ ์ด๋ผ๊ณ ํ๋ค.
๋ธ๋ผ์ฐ์ ์์ง์ ๋์ ๊ณผ์
๋ธ๋ผ์ฐ์ ๋ HTML ์ฝ๋๋ฅผ ํด์ํด์ ํธ๋ฆฌ ํํ๋ก ๊ตฌ์กฐํํ์ฌ DOM ๋ฌธ์๋ฅผ ์์ฑํ๋ค.(
HTML ์์
๋ ๋ ๋๋ง ์์ง์ ์ํด ํ์ฑ๋์ด DOM์ ๊ตฌ์ฑํ๋์์ ๋ ธ๋ ๊ฐ์ฒด
๋ก ๋ณํ๋๋ค.) ์ด๋ ๋ธ๋ผ์ฐ์ ๋ด์ ์กด์ฌํ๋ ๋ ๊ฐ์ง ์์ง, ์ฆ ๋ ๋๋ง ์์ง๊ณผ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง ์ค,๋ ๋๋ง ์์ง
์ด HTML๋ฌธ์๋ฅผํ์ฑ
ํ์ฌ DOM์ ์์ฑํ๊ณ , DOM์ ์ฐธ๊ณ ํ์ฌ ํ๋ฉด์ ์น ์ฝํ ์ธ ๋ฅผ๋ ๋๋ง
ํ๋ค. ์ด๋ ๋ ๋๋ง ์์ง์ html, css, js ํ์ผ์ ์ฐธ๊ณ ํ๋ค.
๋ฌธ์ ํ์ฑ
: ๋ธ๋ผ์ฐ์ ๊ฐ ์ฝ๋๋ฅผ ์ดํดํ๊ณ ์ฌ์ฉํ ์ ์๋ ๊ตฌ์กฐ๋ก ๋ณํํ๋ ๊ฒ
์น ๋ธ๋ผ์ฐ์ ์์๋ ์ด๋ฐ์
์๋ฐ์คํฌ๋ฆฝํธ ์์ง
๋ํ ์กด์ฌํ๋๋ฐ, ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์ฝ์ด๋ด ๊ธฐ๋ฅ์ ์๋์ํค๋ ์ญํ ์ ์ํํ๋ค.
HTML์ JavaScript์ ๊ฐ์ฒด ๊ตฌ์กฐ์ ๊ฐ์
ํธ๋ฆฌ ๊ตฌ์กฐ
๋ผ์, JavaScript์ DOM์ด ๋ธ๋ผ์ฐ์ ์ ์ ๊ทผํ๊ธฐ ๊ฐ์ฅ ๋ฐ๋์งํ๋ค.
์ค๋ฌด์์ ์ค์ํ๊ฒ ๋ค๋ฃจ๋ ๋
ธ๋ํ์
์ 4๊ฐ์ง๋ก๋ฌธ์๋
ธ๋
, ์์๋
ธ๋
, ์ดํธ๋ฆฌ๋ทฐํธ ๋
ธ๋
, ํ
์คํธ ๋
ธ๋
๊ฐ ์๋ค.
๋ฌธ์ ๋ ธ๋
ex.
document
- DOM ํธ๋ฆฌ์ ์ต์์์ ์กด์ฌํ๋ document ๊ฐ์ฒด
- HTML ๋ฌธ์ ์ ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด
- DOMํธ๋ฆฌ์ ๋ฃจํธ ๋ ธ๋๋ก์จ DOM ํธ๋ฆฌ์ ๋ ธ๋๋ค์ ์ ๊ทผํ๊ธฐ ์ํ ์ง์ ์ ์ญํ ์ ๋ด๋น
์์ ๋ ธ๋
ex.
html
,head
,body
,meta
,ul
,li
HTML์ ๊ตฌ์กฐ๋ฅผ ํํํ๊ธฐ ์ํ ๊ฐ์ฒด
์ดํธ๋ฆฌ๋ทฐํธ ๋ ธ๋
ex .
id="..."
,src="..."
,rel="..."
,href="..."
- ์ดํธ๋ฆฌ๋ทฐํธ ๋ ธ๋๋ ๋ถ๋ชจ ์์์ ์ฐ๊ฒฐ๋์์ง ์๊ณ ์์ ๋ ธ๋์๋ง ์ฐ๊ฒฐ
- ๋ฐ๋ผ์ ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ์ฐธ์กฐํ๊ฑฐ๋ ๋ณ๊ฒฝํ๋ ค๋ฉด ๋จผ์ ์์ ๋ ธ๋์ ์ ๊ทผ
ํ ์คํธ ๋ ธ๋
- HTML ์์์ ํ ์คํธ๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด
- ์์ ๋ ธ๋์ ์์ ๋ ธ๋์ด๋ค.
- ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง ์ ์๋ ๋ฆฌํ ๋ ธ๋(์ต์ข ๋จ)
- ํ ์คํธ ๋ ธ๋์ ์ ๊ทผํ๋ ค๋ฉด ๋ถ๋ชจ ๋ ธ๋์ธ ์์ ๋ ธ๋์ ๋จผ์ ์ ๊ทผ.
์ ์ฝ๋์์ ์๋ก์ด toDo ๋
ธ๋๋ฅผ ๋ง๋ค๊ณ ์ถ๊ฐํด๋ณด์.
๊ฐ๋จํ CSS๋ก ์คํ์ผ๋ง์ ์ ์ฉํด์ค ์ํ์ด๋ค.
1. ๋ ธ๋ ๋ง๋ค๊ธฐ
document.createElement ('div')
let newToDo =
document.createElement
('div')
createElement
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก์ด ๋ ธ๋๋ฅผ ์์ฑํด์ฃผ์.
๋ ธ๋๋ฅผ ์์ฑํ newToDo๋ผ๋ ๋ณ์์ ๋ด์๋์๋ค.
์ด๋์ ๋ ธ๋๋ DOM์์ ์์ฑ๋ง ํ ์ํ์ด๊ณ , DOM ํธ๋ฆฌ์ ์ถ๊ฐ๋์ง๋ ์์ ์ํ์ด๋ค.
๋ฐ๋ผ์ ์์ง์ ๋ค์๊ณผ ๊ฐ์ด ๋ณ๋์ด ์์์ ํ์ธํ ์ ์๋ค.
2. ๋ ธ๋ ๋ํธ๋ฆฌ์ ์ถ๊ฐํ๊ธฐ
container.
append
(newToDo)์ปจํ ์ด๋์ ์์ฑํ newToDo๊ฐ์ ์ถ๊ฐํด๋ณด์.
์ฝ์์ฐฝ์์ ์์ ๊ฐ์ด ๋น div ํ๊ทธ๊ฐ ์์ฑ๋จ์ ํ์ธํ ์ ์๋ค.
3. ๋ ธ๋์ ํ ์คํธ ์ถ๊ฐ
newToDo.textContent = '๋ง์๋๊ฑฐ ๋จน๊ธฐ'
div ํ๊ทธ ๋ด๋ถ์ ํ ์คํธ '๋ง์๋๊ฑฐ ๋จน๊ธฐ'๋ฅผ ์ถ๊ฐํ์๋ค.
์น ํ๋ฉด์์๋ ํ ์คํธ๊ฐ ์ถ๋ ฅ๋จ์ ํ์ธํ ์ ์๋ค.
ํ์ง๋ง ์์ง class = "toDo"๊ฐ ์ ์ฉ๋์ง ์์ CSS๋ ์ ์ฉ๋์ง ์์ ์ํ์ด๋ค.
4. ํ๊ทธ์ ํด๋์ค ์ถ๊ฐํ๊ธฐ
newToDo.
classList.add
('toDo')classList ๋ฉ์๋๋ฅผ ํตํด toDo ํด๋์ค๋ฅผ ์ ์ฉํด์ค ๋ชจ์ต์ด๋ค.
CSS๋ ์ ์ ์ฉํ ๊ฒ์ ํ์ธํ ์ ์๋ค.
5. ๋ ธ๋ ์ญ์ ํ๊ธฐ
newToDo.
remove
( )๋ฅผ ํตํด ์ญ์ ๊ฐ ๊ฐ๋ฅํ๋ค.
๋ ธ๋๊ฐ ์์ ํ ์ญ์ ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์์์์ ์ ๊ทผ
ํ๋์ ์์๋ ธ๋ ์ ํ
document.
getElementById(id)
Return
: HTMLElement๋ฅผ ์์๋ฐ์๊ฐ์ฒด
- id ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ์ผ๋ก
์์ ๋ ธ๋
๋ฅผํ ๊ฐ
์ ํํ๋ค.
๋ณต์๊ฐ๊ฐ ์ ํ๋ ๊ฒฝ์ฐ,์ฒซ๋ฒ์งธ ์์
๋ง ๋ฐํํ๋ค.- ํด๋น id๊ฐ์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ
null
์ ๋ฐํํ๋ค.- ๋์ผํ ์ด๋ฆ์
์ ์ญ ๋ณ์
๊ฐ ์๋ฌต์ ์ผ๋ก์ ์ธ
๋๊ณ ํด๋น ๋ ธ๋ ๊ฐ์ฒด๊ฐํ ๋น
๋๋ค.
(๋จ, id์ ๋์ผํ ์ด๋ฆ์ ์ ์ญ๋ณ์๊ฐ ์ด๋ฏธ ์ ์ธ๋ ๊ฒฝ์ฐ์๋ ๋ ธ๋ ๊ฐ์ฒด๊ฐ ์ฌํ ๋น๋์ง ์๋๋ค.)
document.
querySelector(cssSelector)
Return
: HTMLElement๋ฅผ ์์๋ฐ์๊ฐ์ฒด
- CSS ์ ํ์๋ฅผ ์ด์ฉํ ์์ ๋ ธ๋ ์ทจ๋
- CSS ์ ๋ ํฐ๋ฅผ ์ฌ์ฉํ์ฌ
์์ ๋ ธ๋
๋ฅผํ ๊ฐ
์ ํํ๋ค.
๋ณต์๊ฐ๊ฐ ์ ํ๋ ๊ฒฝ์ฐ,์ฒซ๋ฒ์งธ ์์
๋ง ๋ฐํํ๋ค.- ํด๋น id๊ฐ์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ
null
์ ๋ฐํํ๋ค.- ์ธ์๋ก ์ ๋ฌํ CSS ์ ํ์๊ฐ ๋ฌธ๋ฒ์ ๋ง์ง ์๋ ๊ฒฝ์ฐ
DOM Exception ์๋ฌ
๊ฐ ๋ฐ์ํ๋ค.์ฌ๋ฌ๊ฐ์ ์์๋ ธ๋ ์ ํ
*
HTML Collection
/NodeList
๊ฐ์ฒด๋์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด
์ด๋ฉด์์ดํฐ๋ฌ๋ธ
์ด๋ค.
document.
getElementsByClassName(class)
Return
:HTMLCollection ๊ฐ์ฒด
[ ... , ... , ... ] , (live)
- class ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ์ผ๋ก
์์ ๋ ธ๋
๋ฅผ๋ชจ๋
์ ํํ๋ค.
๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ์ฌ๋ฌ ๊ฐ
์class
๋ฅผ ์ง์ ํ ์ ์๋ค.- ํ๊ทธ ์ด๋ฆ์ ๊ฐ๋ ์์๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ ๋น HTMLCollection ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค.
document.
getElementsByTagName(tagName)
Return
:HTMLCollection ๊ฐ์ฒด
[ ... , ... , ... ] , (live)
- ํ๊ทธ๋ช ์ผ๋ก ์์ ๋ ธ๋๋ฅผ ๋ชจ๋ ์ ํํ๋ค.
- ํ๊ทธ ์ด๋ฆ์ ๊ฐ๋ ์์๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ ๋น HTMLCollection ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค.
document.
querySelectorAll(selector)
Return
:NodeList
(non-live)
- CSS ์ ํ์๋ฅผ ์ด์ฉํ ์์ ๋ ธ๋ ์ทจ๋
- ์ง์ ๋ CSS ์ ํ์๋ฅผ ์ฌ์ฉํ์ฌ ์์ ๋ ธ๋๋ฅผ ๋ชจ๋ ์ ํํ๋ค.
- ์ธ์๋ก ์ ๋ฌํ CSS ์ ํ์๊ฐ ๋ฌธ๋ฒ์ ๋ง์ง ์๋ ๊ฒฝ์ฐ
DOM Exception ์๋ฌ
๊ฐ ๋ฐ์ํ๋ค.
ํ์
parentNode
Return
: HTMLElement๋ฅผ ์์๋ฐ์ ๊ฐ์ฒด
- ๋ถ๋ชจ ๋ ธ๋๋ฅผ ํ์ํ๋ค.
firstChild
,lastChild
Return
: HTMLElement๋ฅผ ์์๋ฐ์ ๊ฐ์ฒด
- ์์ ๋ ธ๋๋ฅผ ํ์ํ๋ค.
hasChildNodes()
Return
: Boolean ๊ฐ
- ์์ ๋ ธ๋๊ฐ ์๋์ง ํ์ธํ๊ณ
Boolean
๊ฐ์ ๋ฐํํ๋ค.- ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ๋์
childNodes
Return
: NodeList (non-live)
- ์์ ๋ ธ๋์ ์ปฌ๋ ์ ์ ๋ฐํํ๋ค.
- ํ ์คํธ ์์๋ฅผ ํฌํจํ
๋ชจ๋ ์์ ์์
๋ฅผ ๋ฐํํ๋ค.- ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ๋์
children
Return
: HTMLCollection (live)
- ์์ ๋ ธ๋์ ์ปฌ๋ ์ ์ ๋ฐํํ๋ค.
- ์์ ์์ ์ค์์
Element type ์์
๋ง์ ๋ฐํํ๋ค.
previousSibling
,nextSibling
Return
: HTMLElement๋ฅผ ์์๋ฐ์ ๊ฐ์ฒด
- ํ์ ๋ ธ๋๋ฅผ ํ์ํ๋ค. text node๋ฅผ ํฌํจํ
๋ชจ๋ ํ์ ๋ ธ๋
๋ฅผ ํ์ํ๋ค.
previousElementSibling
,nextElementSibling
Return
: HTMLElement๋ฅผ ์์๋ฐ์ ๊ฐ์ฒด
- ํ์ ๋ ธ๋๋ฅผ ํ์ํ๋ค. ํ์ ๋ ธ๋ ์ค์์
Element type ์์
๋ง์ ํ์ํ๋ค.
์กฐ์
ํ ์คํธ ๋ ธ๋์์ ์ ๊ทผ / ์์
์์์ ํ ์คํธ๋
ํ ์คํธ ๋ ธ๋
์ ์ ์ฅ๋์ด ์๋ค.ํ ์คํธ ๋ ธ๋
์ ์ ๊ทผํ๋ ค๋ฉด ์๋์ ๊ฐ์ ์์์ด ํ์ํ๋ค.1 ํด๋น ํ ์คํธ ๋ ธ๋์
๋ถ๋ชจ ๋ ธ๋
๋ฅผ ์ ํํ๋ค. ํ ์คํธ ๋ ธ๋๋ ์์ ๋ ธ๋์ ์์์ด๋ค.
2 firstChild ํ๋กํผํฐ๋ฅผ ์ฌ์ฉํ์ฌํ ์คํธ ๋ ธ๋
๋ฅผ ํ์ํ๋ค.
3 ํ ์คํธ ๋ ธ๋์ ์ ์ผํ ํ๋กํผํฐ(nodeValue
)๋ฅผ ์ด์ฉํ์ฌํ ์คํธ๋ฅผ ์ทจ๋
ํ๋ค.
4 nodeValue๋ฅผ ์ด์ฉํ์ฌํ ์คํธ๋ฅผ ์์
ํ๋ค.
nodeValue
Return
: ํ ์คํธ ๋ ธ๋์ ๊ฒฝ์ฐ๋๋ฌธ์์ด
, ์์ ๋ ธ๋์ ๊ฒฝ์ฐnull
๋ฐํ
- ๋ ธ๋์ ๊ฐ์ ๋ฐํํ๋ค.
์ดํธ๋ฆฌ๋ทฐํธ ๋ ธ๋์์ ์ ๊ทผ/์์
className
class ์ดํธ๋ฆฌ๋ทฐํธ์
๊ฐ์ ์ทจ๋
๋๋๋ณ๊ฒฝ
ํ๋ค.className ํ๋กํผํฐ์
๊ฐ์ ํ ๋น
ํ๋ ๊ฒฝ์ฐ, class ์ดํธ๋ฆฌ๋ทฐํธ๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด class ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ์์ฑํ๊ณ ์ง์ ๋ ๊ฐ์ ์ค์ ํ๋ค.class ์ดํธ๋ฆฌ๋ทฐํธ์
๊ฐ์ด ์ฌ๋ฌ ๊ฐ
์ผ ๊ฒฝ์ฐ, ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋๋ฌธ์์ด
์ด ๋ฐํ๋๋ฏ๋ก String ๋ฉ์๋ split(' ')๋ฅผ ์ฌ์ฉํ์ฌ๋ฐฐ์ด
๋ก ๋ณ๊ฒฝํ์ฌ ์ฌ์ฉํ๋ค.
classList
add
,remove
,item
,toggle
,contains
,replace
๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
IE10 ์ด์์ ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ค.
id
- id ์ดํธ๋ฆฌ๋ทฐํธ์
๊ฐ์ ์ทจ๋
๋๋๋ณ๊ฒฝ
ํ๋ค.- id ํ๋กํผํฐ์ ๊ฐ์ ํ ๋นํ๋ ๊ฒฝ์ฐ, id ์ดํธ๋ฆฌ๋ทฐํธ๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด id ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ์์ฑํ๊ณ ์ง์ ๋ ๊ฐ์ ์ค์ ํ๋ค.
hasAttribute(attribute)
Return
: Boolean
- ์ง์ ํ ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ๊ฐ์ง๊ณ ์๋์ง ๊ฒ์ฌํ๋ค.
getAttribute(attribute)
Return
: ๋ฌธ์์ด
- ์ดํธ๋ฆฌ๋ทฐํธ์
๊ฐ์ ์ทจ๋
ํ๋ค.
setAttribute(attribute, value)
Return
: undefined
- ์ดํธ๋ฆฌ๋ทฐํธ์ ์ดํธ๋ฆฌ๋ทฐํธ
๊ฐ์ ์ค์
ํ๋ค.
removeAttribute(attribute)
Return
: undefined
- ์ง์ ํ ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ
์ ๊ฑฐ
ํ๋ค.
HTML ์ฝํ ์ธ ์กฐ์
innerHTML, innerText, textContent ๋ชจ๋ node๋ element์ ํ ์คํธ ๊ฐ์ ์ฝ์ด์ค๊ณ ์ค์ ํ ์ ์๋ค.
innerHTML
- ํด๋น ์์์
๋ชจ๋ ์์ ์์
๋ฅผ ํฌํจํ๋ ๋ชจ๋ ์ฝํ ์ธ ๋ฅผ ํ๋์ ๋ฌธ์์ด๋ก ์ทจ๋ํ ์ ์๋ค.
์ด ๋ฌธ์์ด์๋งํฌ์
(HTML
,XML
๋ฑ)์ ํฌํจํ๋ค.
์์
id='example'์ ๋ด์ ๋ณ์๋ฅผ ์ถ๋ ฅํ๋ ๊ฒฝ์ฐ ์๋ ์ ์ฒด ํ ์คํธ๋ฅผ ํ๋ฒ์ ๋ฐ์์ค๊ฒ ๋๋ค.<div id='example'> innerHTML์ ์์ ์ถ๋ ฅ ์ ๋๋ค. <span style='color:red'>๋นจ๊ฐ์</span></div>
textContent
- ์์์
ํ ์คํธ ์ฝํ ์ธ
๋ฅผ์ทจ๋
๋๋๋ณ๊ฒฝ
ํ๋ค. ์ด๋ ๋งํฌ์ ์ ๋ฌด์๋๋ค.- textContent๋ฅผ ํตํด ์์์ ์๋ก์ด ํ ์คํธ๋ฅผ ํ ๋นํ๋ฉด ํ ์คํธ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค.
๋งํฌ์
์ ํฌํจ์ํค๋ฉด๋ฌธ์์ด๋ก ์ธ์
๋์ด ๊ทธ๋๋ก ์ถ๋ ฅ๋๋ค.
์์
id='example'์ ๋ด์ ๋ณ์๋ฅผ ์ถ๋ ฅํ๋ ๊ฒฝ์ฐ style ํ๊ทธ์ ์๊ด ์์ด ๋ ธ๋๊ฐ ๊ฐ์ง ํ ์คํธ ๊ฐ์ ์ฝ๋๋ค.innerHTML์ ์์ ์ถ๋ ฅ ์ ๋๋ค. ๋นจ๊ฐ์
innerText
- innerText ํ๋กํผํฐ๋ฅผ ์ฌ์ฉํ์ฌ๋ ์์์
ํ ์คํธ ์ฝํ ์ธ
์๋ง ์ ๊ทผํ ์ ์๋ค.- ํ์ง๋ง ์๋์ ์ด์ ๋ก ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข๋ค.
- ๋นํ์ค์ด๋ค.
- CSS์ ์์ข ์ ์ด๋ค. ์๋ฅผ ๋ค์ด CSS์ ์ํด ๋นํ์(visibility: hidden;)๋ก ์ง์ ๋์ด ์๋ค๋ฉด ํ ์คํธ๊ฐ ๋ฐํ๋์ง ์๋๋ค.
- CSS๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ฏ๋ก textContent ํ๋กํผํฐ๋ณด๋ค ๋๋ฆฌ๋ค
์์
id='example'์ ๋ด์ ๋ณ์๋ฅผ ์ถ๋ ฅํ๋ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ด ํ ์คํธ๋ง ์ถ๋ ฅ๋๋ค.innerHTML์ ์์ ์ถ๋ ฅ ์ ๋๋ค.
DOM ์กฐ์ ๋ฐฉ์
innerHTML ํ๋กํผํฐ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์๋ก์ด ์ฝํ ์ธ ๋ฅผ ์ถ๊ฐํ ์ ์๋ ๋ฐฉ๋ฒ์ DOM์ ์ง์ ์กฐ์ํ๋ ๊ฒ์ด๋ค. ํ ๊ฐ์ ์์๋ฅผ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ค. ์ด ๋ฐฉ๋ฒ์ ๋ค์์ ์์์ ๋ฐ๋ผ ์งํํ๋ค.
์์ ๋ ธ๋ ์์ฑ createElement() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก์ด ์์ ๋ ธ๋๋ฅผ ์์ฑํ๋ค. createElement() ๋ฉ์๋์ ์ธ์๋ก ํ๊ทธ ์ด๋ฆ์ ์ ๋ฌํ๋ค.
ํ ์คํธ ๋ ธ๋ ์์ฑ createTextNode() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก์ด ํ ์คํธ ๋ ธ๋๋ฅผ ์์ฑํ๋ค. ๊ฒฝ์ฐ์ ๋ฐ๋ผ ์๋ต๋ ์ ์์ง๋ง ์๋ตํ๋ ๊ฒฝ์ฐ, ์ฝํ ์ธ ๊ฐ ๋น์ด ์๋ ์์๊ฐ ๋๋ค.
์์ฑ๋ ์์๋ฅผ DOM์ ์ถ๊ฐ appendChild() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑ๋ ๋ ธ๋๋ฅผ DOM tree์ ์ถ๊ฐํ๋ค. ๋๋ removeChild() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ DOM tree์์ ๋ ธ๋๋ฅผ ์ญ์ ํ ์๋ ์๋ค.
createElement(tagName)
ํ๊ทธ์ด๋ฆ์ ์ธ์๋ก ์ ๋ฌํ์ฌ ์์๋ฅผ ์์ฑํ๋ค.
Return: HTMLElement๋ฅผ ์์๋ฐ์ ๊ฐ์ฒด
๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ค.
createTextNode(text)
ํ ์คํธ๋ฅผ ์ธ์๋ก ์ ๋ฌํ์ฌ ํ ์คํธ ๋ ธ๋๋ฅผ ์์ฑํ๋ค.
Return: Text ๊ฐ์ฒด
๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ค.
appendChild(Node)
์ธ์๋ก ์ ๋ฌํ ๋ ธ๋๋ฅผ ๋ง์ง๋ง ์์ ์์๋ก DOM ํธ๋ฆฌ์ ์ถ๊ฐํ๋ค.
Return: ์ถ๊ฐํ ๋ ธ๋
๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ค.
removeChild(Node)
์ธ์๋ก ์ ๋ฌํ ๋ ธ๋๋ฅผ DOM ํธ๋ฆฌ์ ์ ๊ฑฐํ๋ค.
Return: ์ถ๊ฐํ ๋ ธ๋
๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ค.
insertAdjacentHTML( )
insertAdjacentHTML(position, string)
์ธ์๋ก ์ ๋ฌํ ํ ์คํธ๋ฅผ HTML๋ก ํ์ฑํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ก ์์ฑ๋ ๋ ธ๋๋ฅผ DOM ํธ๋ฆฌ์ ์ง์ ๋ ์์น์ ์ฝ์ ํ๋ค. ์ฒซ๋ฒ์งธ ์ธ์๋ ์ฝ์ ์์น, ๋๋ฒ์งธ ์ธ์๋ ์ฝ์ ํ ์์๋ฅผ ํํํ ๋ฌธ์์ด์ด๋ค. ์ฒซ๋ฒ์งธ ์ธ์๋ก ์ฌ ์ ์๋ ๊ฐ์ ์๋์ ๊ฐ๋ค.
โbeforebeginโ
โafterbeginโ
โbeforeendโ
โafterendโ
๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ค.
Element.prototype.matches( )
์ธ์๋ก ์ ๋ฌํ CSS ์ ํ์๋ฅผ ํตํด ํน์ ์์ ๋ ธ๋๋ฅผ ์ทจ๋ํ ์ ์๋์ง ํ์ธํ๋ค.
์ด๋ ์ด๋ฒคํธ ์์์ ์ฌ์ฉํ ๋ ์ ์ฉํ๋ค.
[์ฐธ๊ณ ] https://poiemaweb.com/js-dom
์ ๊ธ์ ๋ด์ฉ์ ๊ฐ๊ฒฐํ๊ฒ ์ ๋ฆฌ, ์์ฑํ์์ต๋๋ค.