const title = document.querySelector("#title");
const CLICKED_CLASS = "clicked";
querySelector๋ฅผ ํตํ์ฌ id="title"์ธ element๋ฅผ title๋ก์ ์ ์ธํด์ค๋๋ค.
function handleClick() {
const currentClass = title.className;
if(currentClass !== CLICKED_CLASS){
title.className = CLICKED_CLASS;
} else {
title.className = "";
}
}
์ด ๋ฐฉ์์ผ๋ก click์ ๋ํ event๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ, ๊ธฐ์กด title์ className์ด ""์ด ์๋ ๊ฒฝ์ฐ (ex) btn) click์ด ๋ฐ์ํ๋ฉด btn์ด clicked๋ก ๋ฐ๋๊ฒ ๋๊ณ ๋ค์ click์ด ๋ฐ์ํ๋ฉด className์ด btn์ด ์๋ ""๋ก ๋ฐ๋๊ฒ ๋๋ค.
btn์ ํน์ฑ๋ ์ ์งํ๊ณ , click ์ฌ๋ถ๋ฅผ ๋ฐ์ํ๊ณ ๋ค์ ํด๋ฆญํ ๊ฒฝ์ฐ ์๋์ ์ํ๋ก ๋์๊ฐ๊ฒ ํ๊ณ ์ ํ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น?
MDN element.classList์ ๋ฉ์๋๋ฅผ ์ฐธ๊ณ ํ๋ฉด, element.classList.contains(string)์ ํตํด ํด๋น element์ class์ค์ string์ ํด๋นํ๋ ์์ฑ์ด ์กด์ฌํ๋์ง ์ฌ๋ถ๋ฅผ ํ์ธ ํ ์ ์๊ณ , element.classList.add(string)์ ํตํด ๊ธฐ์กด์ class์ ํด๋น string์ ์ถ๊ฐํ ์ ์๊ณ , ์ด๋ฏธ ์๋ ๊ฒฝ์ฐ ๋ฌด์ํ๋ค๊ณ ํ๋ค. element.classList.remove(string)์ ๊ฐ์ ๋ฐฉ์์ผ๋ก string์ผ๋ก์ ์ง์ ๋ ํด๋์ค ๊ฐ์ ์ ๊ฑฐํ๋ค๊ณ ํ๋ค. ํด๋น ๋ด์ฉ์ ์ฐธ๊ณ ํ ์ฝ๋๋ ์๋์ ๊ฐ๋ค.
function handleClick() {
const hasClass = title.classList.contains(CLICKED_CLASS);
if (!hasClass) {
title.classList.add(CLICKED_CLASS);
} else {
title.classList.remove(CLICKED_CLASS);
}
}
์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์คํํ๋ฉด, hasClass๋ฅผ ์ด์ฉํ์ฌ title์ class์ "clicked"๊ฐ ํฌํจ๋๋์ง ์ฌ๋ถ๋ฅผ contains๋ฅผ ํตํด ํ์ธํ๊ณ , ๊ธฐ์กด์ class="btn"์ด์๋ ๊ฒฝ์ฐ click์ด ๋ฐ์ํ๋ฉด class="btn clicked"๋ก ์ถ๊ฐ๊ฐ ๋๋ฉฐ, btn์ ํน์ฑ์ ๊ทธ๋๋ก ์ ์ง๋๋ค. click์ด ํ๋ฒ ๋ ๋ฐ์ํ๋ฉด, class="btn"์ผ๋ก ์์ ๋๋ฉฐ ์ฒ์์ ํํ๋ก ๋์๊ฐ๊ฒ ๋๋ค.
์์ MDN ๋ฌธ์์ ๋ฉ์๋๋ฅผ ์ฝ๋ค๋ณด๋ฉด, add(), remove()์ ๊ฐ์ด toggle()์ด๋ผ๋ ๋ฉ์๋๊ฐ ์กด์ฌํ๋๋ฐ, ํด๋น ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์๋์ ๊ฐ์ด ์์ฑํ๋ฉด, ์์ ์ฝ๋์ ์ ํํ ๊ฐ์ ๋ก์ง์ผ๋ก ์๋ํ์ง๋ง ํจ์ฌ ๋ ๊น๋ํ๊ณ ์งง์ ์ฝ๋๋ฅผ ์ฌ์ฉํ ์ ์์์ ์ ์ ์๋ค.
function handleClick() {
title.classList.toggle(CLICKED_CLASS);
}
์ด์ฒ๋ผ, MDN์๋ ์๋ ๊ฒ์ด ์๋ค.
์ญ์ค์ ์ผ๋ก ์๋ ๊ฒ์ด ์์ด์ ์ ํํ๊ฒ ์ํ๋ ๊ฒ์ ์ฐพ๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆด ๋ฟ,,
์์ํฉ๋๋ค!๐