
JavaScript 학습의 기본기를 다지기 위해 js-counter-basics 실습을 진행하였습니다.
이번 글에서는 HTML, CSS, JavaScript의 연동을 통해 간단한 카운터 기능을 구현한 과정과 배운 점을 공유하고자 합니다.
이번 실습은 JavaScript의 기본 문법과 HTML, CSS와의 연동에 중점을 두었습니다. 카운터를 구현하는 과정에서 JavaScript의 이벤트 처리, DOM 조작 방법, 그리고 스타일링의 중요성을 이해하는 데 도움이 되었습니다.
이 기능들은 자바스크립트 DOM 조작과 이벤트 바인딩을 연습하기에 매우 좋은 예제입니다.
먼저, 아래와 같은 간단한 HTML 구조가 필요합니다.
<html lang="ko">
<head>
<meta charset="UTF-8" />
<title>JS Counter</title>
</head>
<body>
<!-- 숫자를 표시할 영역 -->
<span id="value">0</span>
<!-- 숫자를 조작할 버튼들 -->
<button id="decrease" class="btn">Decrease</button>
<button id="reset" class="btn">Reset</button>
<button id="increase" class="btn">Increase</button>
<!-- JS 파일 연결 -->
<script src="script.js"></script>
</body>
</html>
HTML에서는 크게 어려운 부분이 없으며, #value로 카운트 표시, 3개의 버튼으로 카운트 조작을 수행합니다.
아래는 예시 CSS입니다. 자유롭게 스타일링하시면 됩니다.
body {
font-family: sans-serif;
text-align: center;
margin-top: 50px;
}
#value {
display: block;
font-size: 3rem;
margin-bottom: 20px;
}
.btn {
margin: 0 10px;
padding: 10px 20px;
cursor: pointer;
font-size: 1rem;
}
이제 app.js 파일에 핵심 로직을 작성합니다.
버튼을 클릭할 때마다 숫자를 증감/리셋하고, 그 값에 따라 색상을 바꾸도록 구현해 보겠습니다.
let count = 0;
const value = document.querySelector("#value");
const btns = document.querySelectorAll(".btn");
// 필요한 경우 콘솔에서 제대로 선택됐는지 확인
// console.log("btns 확인 : ", btns);
btns.forEach((button) => {
button.addEventListener("click", (event) => {
// 클릭된 버튼의 id 확인
// console.log("event 확인 : ", event);
let btnElementID = event.currentTarget.id;
if (btnElementID === "decrease") {
count--;
} else if (btnElementID === "reset") {
count = 0;
} else {
count++;
}
// count 값에 따라 텍스트 색상 변화
if (count > 0) {
value.style.color = "blue";
} else if (count < 0) {
value.style.color = "red";
} else {
value.style.color = "black";
}
// 화면에 카운트 값 표시
value.textContent = count;
});
});
버튼(Decrease, Reset, Increase)을 클릭할 때마다 카운트 값이 증가하거나 감소하도록 이벤트를 연결했습니다.
값이 변경될 때마다 textContent를 통해 즉시 화면에 반영했습니다.
addEventListener로 버튼마다 click 이벤트를 연결하는 방식 자체는 알고 있었지만,
하지만 반복 연습을 통해 훨씬 간결하고 직관적으로 코드를 작성할 수 있었습니다.
HTML 요소를 자바스크립트로 선택(document.querySelector 등)하고, 그 내용을 .textContent로 바꿔주는 과정이 처음에는 낯설었습니다.
이번 실습을 통해 자바스크립트로 DOM을 제어하고 이벤트 리스너를 활용하는 기본기를 확실히 다질 수 있었습니다.
이 다음에는 특정 숫자에 도달했을 때 애니메이션이나 배경색 변화 등 보다 다양한 기능을 붙여보면서, 사용자 경험을 강화하는 방법을 더 탐구할 계획입니다.
짧은 예제지만, 앞으로 웹 애플리케이션을 만들 때 필요한 사고방식(상태 관리, 화면 업데이트, 이벤트 처리) 등을 배울 수 있어 매우 유익했습니다.
궁금한 점이나 더 좋은 아이디어가 있다면 댓글로 남겨주세요!