๐ DOM์ด๋?
Document Object Model์ ์ฝ์์ด๋ฉฐ, ์ง์ญํด๋ณด์๋ฉด ๋ฌธ์์ ๊ฐ์ฒด ๋ชจ๋ธ์ด๋ผ๊ณ ํ ์ ์๋ค. ๋ฌธ์์ ๊ฐ์ฒด๋ html์ด๋ body ๊ฐ์ html๋ฌธ์์ ํ๊ทธ๋ค์ด ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ด์ฉํ ์ ์๋ ๊ฐ์ฒด๋ก ๋ง๋ค์ด์ง ๊ฒ์ ์๋ฏธํ๋ค.
- HTML : ์นํ์ด์ง ํ ์คํธ ๋ฌธ์๋ฅผ ์์ฑํ ๋ ์ฌ์ฉํ๋๋ฐ, ๊ธฐ๋ณธ ํ ๋๊ฐ๋๋ ์ญํ ์ ํ๋ค.
- CSS : HTML๋ก ์์ฑ๋ ๋ฌธ์๋ฅผ ์คํ์ผ๋งํด์ฃผ๋ ์ญํ ์ ํ๋ค.
- JS : ๋์ ์ธ ํ์ด์ง๋ฅผ ๊ตฌ์ฑํ ์ ์๊ฒ ํด์ฃผ๋ ์ญํ ์ ํ๋ค.
๐ ์ ๋์ ์ธ ๊ตฌ์ฑ์ ์ํด JS๊ฐ ๋์ค๊ฒ ๋๊ฑธ๊น?
CSS,HTML์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ๋ ผ๋ฆฌ์ ์ธ ์ฒ๋ฆฌ๋ฅผ ํ ์๊ฐ ์๋๋ฐ, JS๋ ๋ ผ๋ฆฌ์ ๋ก์ง์ ์งค ์ ์๋ค.
๐ DOM TREE
ํธ๋ฆฌ๊ตฌ์กฐ ๋์ด๋ผ๋ ๊ฒ์ด ๊ฐ์ฒด์ ์ ๊ทผ์ ํ๋๋ฐ,
์นํ์ด์ง HTML์ ๊ณ์ธตํ์์ผ ํธ๋ฆฌ๊ตฌ์กฐ๋ก ๋ง๋ ๊ฐ์ฒด ๋ชจ๋ธ์ด๋ฉฐ, JS๊ฐ ๋ชจ๋ธ๋ก ์นํ์ด์ง์ ์ ๊ทผํ๊ณ , ํ์ด์ง๋ฅผ ์์ ํด์ค๋ค. HTML์ธ์นํ์ด์ง์ JS์๋ ์ญํ ์ ํ๋ค.
๐ ์ฃผ๋ก ์ฐ์ด๋ HTML DOM Methods
- getElementsById : HTML์ id์์์ ์ ๊ทผํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
- innerHTML : HTML ์์์ ๋ด์ฉ์ ๋ถ๋ฌ์ค๊ฑฐ๋ ์์ ํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
- addEventListener : ์์์ ์ด๋ฒคํธ์ ๋ํ ๋ฐ์์ ์ฐ๊ฒฐํ ๋ ์ฌ์ฉํ๋ค.
์ด๋ฌํ ๋ฐฉ์์ผ๋ก style๋ ์ฝ๊ฒ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค. ์์ ์ฝ๋์ ๊ฐ์ด backgroundColor๋ฅผ ์ง์ ๋ฐ๊ฟ์ค ์๋ ์๋๋ฐ, ์ ์ฉ๋ ์ด๋ฏธ์ง๋ ์๋์ ๊ฐ๋ค.
์ด๋ฐ์์ผ๋ก backgroundColor๋ฅผ ์ด์ฉํด์ ๋ง์ผ์ปฌ๋ฆฌ์ ๋ฐฐ๊ฒฝ์์ green์ผ๋ก ๋ฐ๊ฟ์ฃผ์๋ค.
๐ EVENT๋?
๋ค์ํ ๊ธฐ๋ฅ๋ค์ด ํ์ํ ์น์ฌ์ดํธ๊ฐ ๋ง์์ง๋ฉด์ ์ธํฐ๋ ์
์ด ํ์ํ ์ผ์ด ๋ง์์ก๊ณ , ์ธํฐ๋ ์
์ HTML, CSS๋ก ๊ตฌํํ๊ธฐ์๋ ์ ํ์ ์ด๊ธฐ ๋๋ฌธ์ Javascript๊ฐ ๋๋ ๋์๋ค. Javascript๋ฅผ ์ด์ฉํด ์ด๋ฒคํธ๋ฅผ ๊ฐ์งํ๊ณ ์ด๋ค ๋์์ ์ผ์ด๋๊ฒ ํ ์ ์๋ค. ํน์ ์์์ user interactiveํ ๋ฐ์์ ์ฃผ๋ ๊ฒ์ด EVENT๋ผ๊ณ ํ ์ ์๋ค.
(์ข์ ์น์ฌ์ดํธ๋ผ๋ ๊ฒ์ ์ฌ์ฉ์์ ๋ถ๋
ธ๋ฅผ ์ผ์ผํค์ง ์๋ ์ฌ์ดํธ๋ฅผ ์ข์ ์ฌ์ดํธ๋ผ๊ณ ํ๋ค..๐
)
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ ์ํฉ์
- ๋ฒํผ์ ํด๋ฆญํ์์ ๋
- input์ ๊ฐ์ด ๋ณํํ์ ๋
- ์ด์ง๊ฐ ๋ก๋ฉ๋์์ ๋
ex) ์ท์ ํ๋ ์ผํ๋ชฐ ํ์ด์ง์ ์ ๊ทผํ์ ๋, ์ํ ์ฌ์ง์ ๋ง์ฐ์ค๋ฅผ ์ฌ๋ฆฌ๋ฉด ๋ค๋ฅธ ๊ฐ๋์ ์ ํ์ผ๋ก ๋ฐ๋์ด์ ๋ณด์ฌ์ฃผ๋ ๊ฒ
๋ง์ฐ์ค๋ฅผ hoverํ์ ๊ฒฝ์ฐ, ์๋์ด๋ฏธ์ง์ ๊ฐ์ด action์ด ์๋ ๊ฒ์ ์๋ฏธํ๋ค.
๐ addEventListener
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด, ์ฝ๋์ event handler๋ผ๋ ๊ฒ์ ๋ง๋ค์ด์ ๊ทธ ์ด๋ฒคํธ์ ๋ํ ๋ฐ์์ด ์ผ์ด๋๊ฒ ํ ์ ์๋ค.event handler๋ event listener๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค.
DOM API์ ์๋ method์ค ํ๋์ธ addEventListener method๋ฅผ ์ด์ฉํ์ฌ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ์ธ์๋ก ๋ฐ์ ํจ์function()๋ฅผ ์คํ ํ ์ ์๋๋ฐ,
์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ addEventListener๋ฅผ ์ ์ฉํ๋ฉด ๋๋ค.
addEventListenner(์ด๋ฒคํธ์ข
๋ฅ, function(){
});
search.addEventListener('keydown',(e)=>{if(e.code === 'Space'){
alert('๋ค์ ์
๋ ฅํด์ฃผ์ธ์!')
}})
๐ querySeletor ์ getElementBy
์ผ๋จ querySeletor์ getElementBy๋ฅผ ๊ฐ๋จํ๊ฒ ๋น๊ตํด๋ณด์.
getElementByClassName๋ ๋ฐฐ์ด์ ํน์ ๋ถ๋ถ์ ์ ์ํด์ ์ ๊ทผํด์ผ ํ๋ ํน์ง์ด ์๊ณ , querySelector๋ ์ฌ๋ฌ ํด๋์ค์์ ๊ฑธ๋ฆฌ๋ ๋ถ๋ถ ๋จผ์ ์ ๊ทผ๊ฐ๋ฅํ๋ค๋ ํน์ง์ด ์๋ค.
๋ฐ๋ผ์ querySelector๊ฐ ๋ ์ ์ฐํ๋ค. id, class๋ฅผ ํฌํจํ css3 ์ ํ์๋ก ๋ฌธ์ ๊ฐ์ฒด๋ฅผ ์ ํํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ ๋ค์ํ ์ฉ๋๋ก ์ฌ์ฉ๋ ์ ์์ง๋ง getElementBy์ ์ฒ๋ฆฌ ์๋๊ฐ ๋๋ต 1.2๋ฐฐ ์ ๋ ๋ ๋น ๋ฅด๋ค.
querySelector๋ฅผ ๊ทธ๋์ ๋ฌด์กฐ๊ฑด์ ์ผ๋ก ๋ฐฐ์ ํด์ผ ํ๋๊ฐ? ์ ๋ํ ๋ต์ NO๋ผ๊ณ ํ ์ ์๋ค.
querySelector๋ ์ด๋น ์ฝ 7,000,000๊ฑด์ ์์
์ ์ฒ๋ฆฌ ํ ์ ์๊ธฐ๋๋ฌธ์๋ฐ๋ฆฌ์ด๋ก ๊ณ์ฐํด๋ณด๋ฉด ๋ฐ๋ฆฌ ์ด๋น 7,000๊ฑด์ ์คํ ํ๋ค๊ณ ๋ณผ ์ ์๋ค. ๋ฐ๋ผ์ ์์ฒญ๋ ์๋์ด๊ธฐ ๋๋ฌธ์ ๋๋ฆฌ๋ค๊ณ ๋ณผ ์ ์๋ค. getElementBy๊ฐ ๋ณด๋ค ๋น ๋ฅผ ๋ฟ ์ ๋ ๋๋ฆฌ์ง ์๋ค.
'DEV' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
React (0) | 2024.10.20 |
---|---|
Database (2) | 2024.10.20 |
Responsive Web : ๋ฐ์ํ ์น์ฌ์ดํธ (2) | 2024.10.20 |
CSS : Layout์ ๋ชจ๋ ๊ฒ (1) | 2024.10.20 |
Semantic Web๊ณผ Semantic Tag (2) | 2024.10.20 |