์ฑ <๋ฌ๋์๋ฐ์คํฌ๋ฆฝํธ>๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ๋ฐฐ์ด ์๋ฐ์คํฌ๋ฆฝํธ ๋ด์ฉ์ ๋๋ค.
๋ชฉ์ฐจ
- 1. ๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ(DOM, document object model)
- 2. DOM API(Application Programming Interface)
- 3. DOM tree
- 3-1) DOM tree๋ฅผ ๊ตฌ์ฑํ๋ ๋ค์ข ๋ฅ ๋ ธ๋
<๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ(DOM)>
1. ๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ(DOM, document object model) - HTML๋ฌธ์๋ฅผ ์กฐ์ํ๋ ํต์ฌ
- ํ ์คํธ ํ์ผ๋ก ๋ง๋ค์ด์ ธ ์๋ ์น ๋ฌธ์๋ฅผ ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋งํ๋ ค๋ฉด ์น ๋ฌธ์๋ฅผ ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ ์ ์๋ ๊ตฌ์กฐ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค์ผ ํ๋ค.
- ๋ชจ๋ ์์์ ์์์ ์ดํธ๋ฆฌ๋ทฐํธ, ํ ์คํธ๋ฅผ ๊ฐ๊ฐ์ ๊ฐ์ฒด๋ก ๋ง๋ค๊ณ ์ด๋ค ๊ฐ์ฒด๋ฅผ ๋ถ์ ๊ด๊ณ๋ฅผ ํํํ ์ ์๋ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๊ตฌ์ฑํ ๊ฒ
- DOM์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ๋์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์์ผ๋ฉฐ ๋ณ๊ฒฝ๋ DOM์ ๋ ๋๋ง์ ๋ฐ์๋๋ค.
2. DOM API(Application Programming Interface)
- ์ ์ ์ธ ์นํ์ด์ง์ ์ ๊ทผํ์ฌ ๋์ ์ผ๋ก ์นํ์ด์ง๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋ฉ๋ชจ๋ฆฌ ์์ ์กด์ฌํ๋ DOM์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด๊ณ , ์ด๋ ํ์ํ ๊ฒ์ด DOM์ ์ ๊ทผํ๊ณ ๋ณ๊ฒฝํ๋ ํ๋กํผํฐ์ ๋ฉ์๋์ ์งํฉ์ธ DOM API์ด๋ค.
- DOM์ HTML, ECMAScript์์ ์ ์ํ ํ์ค์ด ์๋ ๋ณ๊ฐ์ W3C์ ๊ณต์ ํ์ค์ด๋ฉฐ ํ๋ซํผ/ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ค๋ฆฝ์ ์ด๋ค.
- DOM์ ๋ค์ ๋ ๊ฐ์ง ๊ธฐ๋ฅ์ ๋ด๋นํ๋ค.
- HTML ๋ฌธ์์ ๋ํ ๋ชจ๋ธ ๊ตฌ์ฑ : ๋ธ๋ผ์ฐ์ ๋ HTML ๋ฌธ์๋ฅผ ๋ก๋ํ ํ ํด๋น ๋ฌธ์์ ๋ํ ๋ชจ๋ธ์ ๋ฉ๋ชจ๋ฆฌ์ ์์ฑํ๋ค. ์ด๋ ๋ชจ๋ธ์ ๊ฐ์ฒด์ ํธ๋ฆฌ๋ก ๊ตฌ์ฑ๋๋๋ฐ ์ด๊ฒ์ DOM tree๋ผ ํ๋ค.
- HTML ๋ฌธ์ ๋ด์ ๊ฐ ์์์ ์ ๊ทผ / ์์ : DOM์ ๋ชจ๋ธ ๋ด์ ๊ฐ ๊ฐ์ฒด์ ์ ๊ทผํ๊ณ ์์ ํ ์ ์๋ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค. DOM์ด ์์ ๋๋ฉด ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์ฌ์ฉ์๊ฐ ๋ณด๊ฒ ๋ ๋ด์ฉ ๋ํ ๋ณ๊ฒฝ๋๋ค.
3. DOM tree
- ๋ธ๋ผ์ฐ์ ๊ฐ HTML ๋ฌธ์๋ฅผ ๋ก๋ํ ํ ํ์ฑํ์ฌ ์์ฑํ๋ ๋ชจ๋ธ
- DOM์์ ๋ชจ๋ ์์, ์ดํธ๋ฆฌ๋ทฐํธ, ํ ์คํธ๋ ํ๋์ ๊ฐ์ฒด์ด๋ฉฐ Document ๊ฐ์ฒด์ ์์์ด๋ค. ์์์ ์ค์ฒฉ๊ด๊ณ๋ ๊ฐ์ฒด์ ํธ๋ฆฌ๋ก ๊ตฌ์กฐํํ์ฌ ๋ถ์๊ด๊ณ๋ฅผ ํํํ๋ค.
3-1) DOM tree๋ฅผ ๊ตฌ์ฑํ๋ ๋ค์ข ๋ฅ ๋ ธ๋
- ๋ฌธ์ ๋ ธ๋(Document Node) - ํธ๋ฆฌ์ ์ต์์์ ์กด์ฌํ๋ฉฐ ๊ฐ๊ฐ ์์, ์ดํธ๋ฆฌ๋ทฐํธ, ํ ์คํธ ๋ ธ๋์ ์ ๊ทผํ๋ ค๋ฉด ๋ฌธ์ ๋ ธ๋๋ฅผ ํตํด์ผ ํ๋ค. ์ฆ, DOM tree์ ์ ๊ทผํ๊ธฐ ์ํ ์์์ (entry point)์ด๋ค.
- ์์ ๋ ธ๋(Element Node) - ์์ ๋ ธ๋๋ HTML ์์๋ฅผ ํํํ๋ค. HTML ์์๋ ์ค์ฒฉ์ ์ํด ๋ถ์ ๊ด๊ณ๋ฅผ ๊ฐ์ง๋ฉฐ ์ด ๋ถ์ ๊ด๊ณ๋ฅผ ํตํด ์ ๋ณด๋ฅผ ๊ตฌ์กฐํํ๋ค. ๋ฐ๋ผ์ ์์ ๋ ธ๋๋ ๋ฌธ์์ ๊ตฌ์กฐ๋ฅผ ์์ ํ๋ค๊ณ ๋ง ํ ์ ์๋ค. ์ดํธ๋ฆฌ๋ทฐํธ, ํ ์คํธ ๋ ธ๋์ ์ ๊ทผํ๋ ค๋ฉด ๋จผ์ ์์ ๋ ธ๋๋ฅผ ์ฐพ์ ์ ๊ทผํด์ผ ํ๋ค. ๋ชจ๋ ์์ ๋ ธ๋๋ ์์๋ณ ํน์ฑ์ ํํํ๊ธฐ ์ํด HTMLElement ๊ฐ์ฒด๋ฅผ ์์ํ ๊ฐ์ฒด๋ก ๊ตฌ์ฑ๋๋ค.
- ์ดํธ๋ฆฌ๋ทฐํธ ๋ ธ๋(Attribute Node) - ์ดํธ๋ฆฌ๋ทฐํธ ๋ ธ๋๋ HTML ์์์ ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ํํํ๋ค. ์ดํธ๋ฆฌ๋ทฐํธ ๋ ธ๋๋ ํด๋น ์ดํธ๋ฆฌ๋ทฐํธ๊ฐ ์ง์ ๋ ์์์ ์์์ด ์๋๋ผ ํด๋น ์์์ ์ผ๋ถ๋ก ํํ๋๋ค. ๋ฐ๋ผ์ ํด๋น ์์ ๋ ธ๋๋ฅผ ์ฐพ์ ์ ๊ทผํ๋ฉด ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ์ฐธ์กฐ, ์์ ํ ์ ์๋ค.
- ํ ์คํธ ๋ ธ๋(Text Node) - ํ ์คํธ ๋ ธ๋๋ HTML ์์์ ํ ์คํธ๋ฅผ ํํํ๋ค. ํ ์คํธ ๋ ธ๋๋ ์์ ๋ ธ๋์ ์์์ด๋ฉฐ ์์ ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง ์ ์๋ค. ์ฆ, ํ ์คํธ ๋ ธ๋๋ DOM tree์ ์ต์ข ๋จ์ด๋ค.
โปDOM ํธ๋ฆฌ๋ฅผ ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ์์ ํ์ธํ๋ ๋ฐฉ๋ฒ : ๊ฐ๋ฐ์๋๊ตฌ(Developer Tools)์ Elements๋ฅผ ์ ํํ ํ ์ค๋ฅธ์ชฝ์ properties์ ์ ํ
'๐ฐ ์ธ์ด > JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ด๋ฒคํธ (0) | 2020.01.24 |
---|---|
๋ธ๋ผ์ฐ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ(2) - DOM ์์ ์ ๊ทผ, ์กฐ์ (0) | 2020.01.24 |
์ ๊ท ํํ์ (0) | 2020.01.23 |
๋น๋๊ธฐ์ ํ๋ก๊ทธ๋๋ฐ(1) - ๋๊ธฐvs๋น๋๊ธฐ, ์ฝ๋ฐฑ (0) | 2020.01.14 |
ES6์ ์ฌ๋ณผ, ์ดํฐ๋ ์ดํฐ์ ์ ๋ค๋ ์ดํฐ (0) | 2020.01.14 |