ํด๋ฆญํ๋ฉด ๊ธ์ ์ ๋ฐ๋๊ฒ ํ๊ธฐ
const h1 = document.querySelector(".hello:first-child h1");
function handleTitleClick(){
if(h1.style.color === "blue"){
h1.style.color = "tomato";
}
else {
h1.style.color = "blue";
}
}
h1.addEventListener("click", handleTitleClick);
๋ ๋ณด๊ธฐ ์ข๊ฒ ๋ฐ๊ฟ๋ณด์. ๐
const h1 = document.querySelector(".hello:first-child h1");
function handleTitleClick(){
const currentColor = h1.style.color;
let newColor;
if(currentColor === "blue"){
newColor = "tomato";
}
else {
newColor = "blue";
}
h1.style.color = newColor;
}
h1.addEventListener("click", handleTitleClick);
1. currentColor๋ getter๋ก์จ, ์ต๊ทผ color๊ฐ์ ๋ณต์ฌํ๋ ์ญํ ์ ํฉ๋๋ค. ๊ทธ๋ ๊ธฐ์ ์๋ฏธ๋ก ์ ์ผ๋ก ๋ดค์ ๋ const๋ก ์ ์ธํ๋ ๊ฒ์ด ์ ์ ํฉ๋๋ค.
2. newColor๋ setter๋ก์จ, ๋ณ์์ ๋์
๋ ์์๊ฐ์ h1.style.color์ ์ต์ข
์ ์ผ๋ก ํ ๋นํ๋ ์ญํ ์ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ๋ ์๋ฏธ๋ก ์ ์ผ๋ก ๋ดค์ ๋ ๊ฐ์ด ๋ณ๊ฒฝ๋ ์ ์๋ค๋ ๊ฒ์ ์ผ๋์ ๋๊ธฐ ์ํด let์ผ๋ก ์ ์ธํ๋ ๊ฒ์ด ์ ์ ํฉ๋๋ค.
3. ๋ค๋ค ์์๊ฒ ์ง๋ง ํ๋ก๊ทธ๋๋ฐ์ธ์ด์์ "="(equal) ํ์๋ ์ค๋ฅธ์ชฝ์ ์๋ ๊ฐ์ ์ผ์ชฝ์ ๋์
ํ๋ค๋ ๋ป์
๋๋ค. ์ด๋ฅผ ์ผ๋์ ๋์๋ฉด ์ฝ๋๋ฅผ ์ดํดํ๋๋ฐ ํธํ์ค ๊ฒ ๊ฐ์ต๋๋ค.
4. (์ฐธ๊ณ ) ํจ์ ๋ด์์ ์ ์ธ๋ ๋ณ์๋ ํจ์ ๋ฐ์์๋ ์กด์ฌํ์ง ์์ต๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ const currentColor๋ก ๋ณ์ ์ ์ธ์ ํ๋๋ผ๋, ํจ์๊ฐ ํธ์ถ๋ ๋ ๋ง๋ค ์๋ก์ด ๊ฐ์ ๋ฐ์ ์ ์์ต๋๋ค.
์ด๋ฅผ ํ ๋๋ก ์ฝ๋๋ฅผ ์์ฐจ์ ์ผ๋ก ์ดํดํ๋ฉด,
1) click event ๋ฐ์ ๋ฐ ํจ์ ์คํ
2) currentColor ๋ณ์ ์ ์ธ ํ h1.style.color ๊ฐ ๋ณต์ฌ (getter)
3) newColor ๋ณ์ ์ ์ธ
4) currentColor ํ์ฌ ๊ฐ ํ์ธ
5) ์กฐ๊ฑด์ ๋ฐ๋ผ newColor์ "tomato" or "blue" ๊ฐ ๋์
6) ๋ง์ง๋ง์ผ๋ก h1.style.color์ newColor๊ฐ ๋์
(setter)
=== ๊ฐ์ด ์ผ์นํจ.
= color๋ฅผ ๋ฐ๊ฟ์ค.
element์ style์ JS์์ ๋ณ๊ฒฝํ๋๊ฑธ ์ ํธํ์ง ์๋๋ค. ์๋๋ฉด ๋ค๋ฅธ ์ธ์ด๋ค์ ์๋ ๊ฑธ ์ ํธํ์ง ์๊ธฐ ๋๋ฌธ์ด๋ค. JS๋ฅผ ์ํธ์์ฉ์ ๋ง๋ค์ด ๋ด๋๋ฐ ์ ํฉํ๋ค๊ณ ์๊ฐํ๊ณ , HTML์ ๋ค๋ฅธ ์ ํ์ฌํญ์ด ์๊ณ , CSS๋ JSํ์ผ์์๋ ํ ์ ์์ง๋ง sytle์ CSS์์ ํ๋๊ฑธ ์ ํธํ๋ค.
step1. element๋ฅผ ์ฐพ์๋ผ.
step2. event๋ฅผ listenํด๋ผ.
step3. ๊ทธ event์ ๋ฐ์ํด๋ผ.
style์์
์ ์ ํฉํ ๋๊ตฌ๋ CSS๋ค!!
animation์ ์ ํฉํ ๋๊ตฌ๋ JS๋ค!!
html ํ์ผ์ CSS๋ฌธ์์ JS๋ฌธ์๋ฅผ importํ๊ณ ์๋ค.
โก๏ธ๋ด๊ฐ JS์์ ํ๊ณ ์ถ์๊ฑด, h1์ active class๋ฅผ ์ ๋ฌํ๋ ๊ฒ! ์ด๋ ๊ฒ ํ๋ฉด ๋ ์ ์ JS์ฝ๋๋ก ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ์ป๋๋ค.
error ๋ฐ์ ์ต์ํํ๊ธฐ!
์คํ๋ฅผ ์ณ์ ์ค์๋ฅผ ํ ์ ์๊ธฐ ๋๋ฌธ์ raw string์ ์ฐ๋ ๋์ , const๋ฅผ ์์ฑํ๊ธฐ!!!
๐
class list
function handleTitleClick(){
const clickedClass = “clicked”;
if (h1.classList.contains(clickedClass)){
h1.classList.remove(clickedClass);
} else {
h1.classList.add(clickedClass);
}
}
function handleTitleClick(){
h1.classList.toggle("clicked");
}
์ด ๋๊ฐ๋ ๊ฐ๋ค!!!! toggle ์งฑ!
1. className์ ์ด์ ์ class๋ค์ ์๊ดํ์ง ์๊ณ ๋ชจ๋ ๊ฑธ ๊ต์ฒดํด๋ฒ๋ฆฐ๋ค.
2. classList ์ฐ๋ฆฌ๊ฐ class๋ค์ ๋ชฉ๋ก์ผ๋ก ์์
ํ ์ ์๋๋ก ํ์ฉํด์ค๋ค.
3. contains์ ์ฐ๋ฆฌ๊ฐ ๋ช
์ํ class๊ฐ HTML element์ class์ ํฌํจ๋์ด ์๋์ง ๋งํด์ค๋ค.
4.remove๋ ๋ช
์ํ class name์ ์ ๊ฑฐํ๊ณ add๋ ๋ช
์ํ class name์ ์ถ๊ฐํด์ค๋ค.
5.toggle์ ํ ํฐ์ด ์กด์ฌํ๋ฉด ํ ํฐ์ ์ ๊ฑฐ, ํ ํฐ์ด ์กด์ฌํ์ง ์์ผ๋ฉด ํ ํฐ ์ถ๊ฐ ํ๋ค.