HTML
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Momentum App</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="first" class="container">
<h1>Click me!</h1>
</div>
<script src="app.js"></script>
</body>
</html>
CSS
body {
background-color: beige;
}
h1 {
color: cornflowerblue;
}
.active {
color: tomato;
}
JS
const clickText = document.querySelector(".container h1");
const handleClick = () => {
}
clickText.addEventListener("click", handleClick);
CSS 코드를 보면 .active 클래스의 색상을 지정해놨다, 하지만 어떤 HTML의 요소도 현재 active라는 클래스를 가진 요소가 없고 이를 JavaScript를 이용하여 지정해주면 색상은 tomato로 변경되게 만들려고 한다.
JS
const clickText = document.querySelector(".container h1");
const handleClick = () => {
clickText.className = "active";
}
clickText.addEventListener("click", handleClick);
handleClick 함수안에 h1의 클래스를 active로 지정해주는 로직을 작성한다.
결과: 클릭시 색상이 tomato로 변경되며 console.dir(clickText); 를 이용하여 살펴보면 className이 active로 변경된것을 확인할 수 있다.
JS
const clickText = document.querySelector(".container h1");
const handleClick = () => {
if (clickText.ClassName === "active") {
clickText.ClassName = "";
} else {
clickText.ClassName = "active";
}
}
clickText.addEventListener("click", handleClick)
CSS
.active {
color: tomato;
transition: color .5s ease-in-out;
}
JS
const clickText = document.querySelector(".container h1");
const handleClick = () => {
if (clickText.ClassName === "active") {
clickText.ClassName = "";
} else {
clickText.ClassName = "active";
}
}
clickText.addEventListener("click", handleClick)
// 위 코드는 className을 문자열로 직접 입력해야 한다.
// CSS의 클래스 이름을 변경하면 JS는 두번 수정 되어야한다.
// 이는 오타의 위험성과 유지보수에 불편함을 초래한다.
// 떄문에 아래와 같이 코드를 변경할 수 있다.
JS
const clickText = document.querySelector(".container h1");
const handleClick = () => {
const clickedClass = "active"
if (clickText.className === clickedClass) {
clickText.className = "";
} else {
clickText.className = clickedClass;
}
}
clickText.addEventListener("click", handleClick)