DOM API ๋?
Document(DOM)๋ HTML์ ๋ปํ๊ณ
Object Model์ HTML์ span, div, input ์์๋ค์ ๋ปํ๋ค.
์ฆ, DOM API๋ ์๋ฐ ์คํฌ๋ฆฝํธ์์ HTML์ ์ ์ดํ๋ ์ฌ๋ฌ๊ฐ์ง ๋ช ๋ น๋ค์ด๋ผ๊ณ ์์ญํ ์ ์๋ค.
์๋ฐ ์คํฌ๋ฆฝํธ์์ document ๊ฐ์ฒด์ ์๋ querySelector ๋ฉ์๋๋ฅผ ํตํด HTML์ box ํด๋์ค๋ฅผ ๊ฐ์ง ์์๋ฅผ ์ฐพ์ ๋ค์ ์ฝ์์ ์ถ๋ ฅํ๋ ์ฝ๋๋ฅผ ์์ฑํด ๋ณด์๋ค.
๋ธ๋ผ์ฐ์ ๋ ์ฝ๋๋ฅผ ์์์ ์๋๋ก ์ฝ์ด๋๊ฐ๊ธฐ ๋๋ฌธ์ ์๋ฐ ์คํฌ๋ฆฝํธ์ ์์ฑ๋ ์ฝ๋๊ฐ ๋จผ์ ์คํ์ด ๋๋ค. ๊ทธ ํ์ body๋ถ๋ถ์์ div์์๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ null๊ฐ์ด ์ถ๋ ฅ๋ ๊ฒ์ด๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ script ํ๊ทธ๋ฅผ body์ div ํ๊ทธ ์๋ ๋ถ๋ถ์ผ๋ก ์ฎ๊ฒจ์ฃผ๋ฉด ์ ์์ ์ผ๋ก ์๋ํ๋ค.
ํ์ง๋ง ์ ๋ณด์ ๋ด์ฉ์ ๊ตฌ์กฐ์ ๋ด์ฉ์ ์์ฑํ๋ ๊ฒ์ด ๋ฌธ์ ๊ฐ ๋ฐ์์ํค๋ ๊ฒ์ ์๋์ง๋ง ๊ทธ๋ค์ง ์ข์ ๋ฐฉ๋ฒ์ ์๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ defer๋ผ๋ ํค์๋๋ฅผ ์ถ๊ฐํจ์ผ๋ก์ HTML์ฝ๋๋ฅผ ๋ค ์ฝ์ ์ํ์์ ๋ค์ main.js ๋ด์ฉ์ ์คํํ๊ฒ ๋ค ๋ผ๋ ์๋ฏธ๋ฅผ ๋ถ์ฌํด์ค ์ ์๋ค.
์ฝ๋๋ฅผ ์์ฑํ๋ค๊ฐ HTML ๋ถ๋ถ์ ๋ด์ฉ์ ์ ์์ ์ผ๋ก ์ฐพ์ง ๋ชปํ๋ฉด script ํ๊ทธ์ ์์น๋, defer ํค์๋๊ฐ ์์ฑ๋์ด์๋์ง ํ์ธํด๋ณด์์ผ ํ๋ค.
DOM API
1. document.querySelector
document ๊ฐ์ฒด์ querySelector ๋ฉ์๋๋ฅผ ํตํด HTML์ ์์ ์ค ์ํ๋ ์์๋ฅผ ์ฐพ์ ์ ์๋ค.
์ธ์๋ก๋ ์ฐพ๊ณ ์ํ๋ ์์์ ํน์ฑ์ ๋ฃ์ด์ค ์ ์๋ค. ์ด๋ CSS์ ์ ํ์๋ฅผ ์ด์ฉํ ์ ์๋ค.
2. addEventListener
addEventListener ๋ฉ์๋์๋ 2๊ฐ์ ์ธ์๋ฅผ ์ถ๊ฐํ ์ ์๋ค.
์ฒซ๋ฒ์งธ ์ธ์๋ก๋ ์ด๋ฒคํธ(์ํฉ)๋ฅผ ์์ฑํ๋ค.
๋๋ฒ์งธ ์ธ์๋ก๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ์คํํ ํจ์๋ฅผ ์ต๋ช
ํจ์๋ก ๋ฃ์ด์ค ์ ์๋ค.
=> ํจ์๋ฅผ ๋ฐ์ดํฐ์ฒ๋ผ ์ฌ์ฉํ๋ค.
์ด๋ฒคํธ์ ์ด๋ฆ๋ค์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์๋ฐ ์คํฌ๋ฆฝํธ๋ฅผ ๋ฐฐ์ธ ๋ ๋ค์ ์ดํด๋ณด๊ฒ ๋ค.
์์์ ์์ฑ๋ ๋ฉ์๋๋ ํด๋ฆญ์ด ๋ฐ์ํ๋ฉด ์ฝ์์ Click~! ์ด๋ผ๋ ๋ฌธ์์ด์ ์ถ๋ ฅํ๋ ํจ์๋ฅผ ์คํํ๊ฒ ๋ค๋ ๋ป์ด๋ค.
3. classList.add, classList.remove
๊ฐ๊ฐ์ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ค.
document.querySelector ๋ฉ์๋๋ฅผ ํตํด ํ๋์ ์์๋ฅผ ๊ฒ์ํ๋ค๋ฉด document.querySelectorAll ๋ฉ์๋๋ฅผ ํตํด ์ฌ๋ฌ ๊ฐ์ ์์๋ฅผ ํ ๋ฒ์ ์ฐพ์ ์ ์๋ค.
์ธ์๋ก๋ ์ฐพ์ ์์ ๊ฐ๊ฐ์ ๋ํด ์คํํ ํจ์๋ฅผ ์ต๋ช ํจ์๋ก ์ ๋ฌํ๋ค.
์ต๋ช ํจ์์ ์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ณ์์๋ ํ์ฌ ๋ฐ๋ณต ์ค์ธ ์์๋ฅผ ๋ฐ์๋ณผ ์ ์๊ณ , ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ก๋ ๋ฐ๋ณต ์ค์ธ ์์์ ๋ฒํธ๋ฅผ ๋ฐ์๋ณผ ์ ์๋ค. ์ด๋ ์๋ฐ ์คํฌ๋ฆฝํธ๋ zero-based numbering์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ฒํธ๋ 0๋ฒ๋ถํฐ ๋งค๊ฒจ์ง๋ค.
๋งค๊ฐ ๋ณ์์ ์ด๋ฆ์ ์ํ๋ ๋๋ก ์ง์ ํ ์ ์์ง๋ง ์ง๊ด์ ์ผ๋ก ์์๋ณผ ์ ์๋๋ก ์ด๋ฆ์ ์์ฑํ๋ ๊ฒ์ด ์ข๋ค.
forEach ๋ฉ์๋๋ฅผ ์ ์ฉํด๋ณด๊ธฐ ์ํด ํด๋์ค๊ฐ box์ธ ์์๋ฅผ 4๊ฐ ๋ง๋ค์ด ์ฃผ์๋ค.
๊ทธ๋ฆฌ๊ณ forEach ๋ฉ์๋๋ก ๊ฐ ์์์ ์ ๊ทผํ์ฌ classList์ order-index + 1 ํด๋์ค๋ฅผ ์ถ๊ฐํด์ฃผ์๊ณ , ์ฝ์์ ์ถ๋ ฅํด๋ณธ ๊ฒฐ๊ณผ ์ ์ ์ฉ๋์์์ ํ์ธํ ์ ์๋ค.
CSS๋ HTML์์๋ zero-based numbering์ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ 0๋ถํฐ ์์ํ๋ ์ซ์๋ฅผ 1๋ถํฐ ์์ํ ์ ์๋๋ก ๋ง๋ค์ด์ฃผ๋ ๊ฒ์ด ์ข๋ค.
5. textContent ์์ฑ
์์์ ๋ค์ด์๋ ๋ด์ฉ ์ค text๋ก๋ง ์ด๋ฃจ์ด์ง ๋ด์ฉ๋ง ๋ฐํํด์ฃผ๋ DOM API์ด๋ค.
textContent ์์ฑ์ ๊ฐ์ ์ป๋ ์ฉ๋์, ๊ฐ์ ์ง์ ํ๋ ์ฉ๋ ๋ ๊ฐ์ง ์ฉ๋๋ก ์ฌ์ฉ๋ ์ ์๋ค.
'๊ฐ๋ฐ > HTML, CSS, JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BEM (0) | 2023.01.13 |
---|---|
๋ฉ์๋ ์ฒด์ด๋(Method Chaining) (0) | 2023.01.12 |
ํจ์ (0) | 2023.01.11 |
๋ณ์, ์์ฝ์ด (0) | 2023.01.11 |
๋ฐ์ดํฐ ์ข ๋ฅ(์๋ฃํ) (0) | 2023.01.11 |