오늘의 미션은 바로 카운터 앱 만들기이다.
제일 이해하기 어려운 DOM 조작과 숫자연산이다..😓
숫자연산 이론은 들으면 아하! 그렇군! 하고 이해는 되지만 막상 하려고 하면
엥..? 상태가 되어버린다...❓
제일 힘들어 하는 부분이 나와서 연습할겸 복습도 하고 공부도하고!
오늘은 추가 도전과제 까지 있어서 흥미롭다..!👍
🚩 내가 쓴 코드
minusBtn.addEventListener('click', function(){
let current = parseInt(result.textContent);
result.textContent = current - 1;
if(current > 0){
result.textContent = current2 - 1;
}else{
alert("0 미만으로 내려갈 수 없습니다");
}
});
📍 발생한 문제
- 존재하지 않는 변수 current2를 사용했다.
- 조건문을 사용하기 전에 이미 값을 감소시키는 연산을 실행해, 조건과 상관없이 값이 무조건 1씩 감소했다.
- 이로 인해 버튼을 클릭할 때마다 계속해서 숫자가 0 이하인 -1, -2로 감소했다.
🔧 올바른 수정 코드
minusBtn.addEventListener('click', function(){
let current = parseInt(result.textContent);
if(current > 0){ // 숫자가 0보다 클 때만 감소
result.textContent = current - 1;
}else{
alert("0 미만으로 내려갈 수 없습니다");
}
});
📖 수정된 코드와의 비교 및 상세 분석
- 변수명 사용:
- 잘못 사용한 변수명 current2를 올바른 변수명 current로 수정했다.
- 조건문 위치:
- 조건문(if)을 값 변경 연산보다 먼저 위치시켜 조건을 정확히 판단하도록 했다.
- 조건문이 나중에 위치하면 이미 값이 감소되어 있으므로 조건문이 제대로 동작하지 않는다.
📌 parseInt()란? (추가설명)
- parseInt()는 문자열을 숫자로 바꾸는 JavaScript 내장 함수이다.
- DOM에서 가져오는 텍스트 값은 기본적으로 문자열 형태로 반환된다. 숫자 연산을 수행하기 위해서는 반드시 숫자형으로 변환해야 한다.
parseInt() 사용 예시 코드
내가 어려워했던 실제 코드:
addBtn.addEventListener('click', function(){
let current = parseInt(result.textContent);
result.textContent = current + 1;
});
위 코드에서 result.textContent는 문자열이기 때문에 숫자로 변환하지 않으면
결과가 "01" 처럼 문자열로 연결된다. 그래서 parseInt()를 사용해서 숫자로 변환해주는 것이다.
let text = "10";
console.log(text + 1); // 결과: "101" (문자열로 처리)
console.log(parseInt(text) + 1); // 결과: 11 (숫자로 처리)
📌 DOM(Document Object Model)이란?
- DOM은 HTML 문서를 JavaScript로 쉽게 접근하고 조작할 수 있도록 구조화한 객체 모델이다.
- DOM 조작이란 HTML 요소를 선택하고, 내용을 변경하거나 이벤트를 처리하는 작업이다.
예시
// DOM으로 요소 선택
const result = document.querySelector('.number');
// DOM으로 요소 내용 변경
result.textContent = "변경할 텍스트";
💡 전역 변수란?
- 전역 변수(global variable)는 프로그램 전체에서 접근 및 변경 가능한 변수를 말한다.
- 함수나 이벤트 처리기 등 여러 곳에서 같은 값을 관리할 때 유용하다.
- 전역 변수로 카운터를 관리하면, 버튼 클릭 시 숫자 증가/감소를 효과적으로 구현할 수 있다.
전역 변수 사용 예시
// 전역 변수로 초기값 설정
let count = 0;
// 증가 버튼 클릭 시 동작
addBtn.addEventListener('click', function(){
count++;
result.textContent = count;
});
// 감소 버튼 클릭 시 동작 (0 미만 방지)
minusBtn.addEventListener('click', function(){
if(count > 0){
count--;
result.textContent = count;
} else {
alert("0 미만으로 내려갈 수 없습니다");
}
});
이 방법은 DOM에서 텍스트를 가져오지 않아도 변수를 통해 숫자 값을 관리하므로 간편하고 명확하다.
✅ 배운 점
- 조건문은 항상 연산 전에 사용하여 논리적 오류를 예방하자.
- 정확한 변수명 사용으로 코드 오류를 방지하자.
- DOM의 개념과 활용법, 그리고 parseInt() 함수의 쓰임을 이해하고 적절히 활용하자.
- 전역 변수 개념을 이해하고 필요한 상황에서 적극 활용하자.
📚 ChatGPT가 추가 학습 팁!
- 조건문(if)을 쓸 때는 항상 조건을 먼저 체크한 후 값을 변경하거나 연산을 해야 원하는 결과가 나온다.
- 변수 이름을 지을 때는 철자를 정확하게 하고, 가능한 의미를 쉽게 파악할 수 있도록 작성하는 습관을 갖자.
- JavaScript에서 DOM 요소의 텍스트는 기본적으로 문자열이다.
숫자 연산을 하기 위해서는 parseInt() 같은 함수를 써서 숫자로 변환해야 한다. - 에러가 발생할 때마다 브라우저의 개발자 도구(console)를 활용해서 문제가 되는 부분을 찾아보자.
에러 메시지를 잘 읽으면 문제를 빠르게 해결할 수 있다.
'AI 실험실𖦹 > 데일리 코드 미션' 카테고리의 다른 글
🤖 ChatGPT와 함께 공부하는 JavaScript 5일차 - 간단한 디지털 시계 만들기 미션 (0) | 2025.04.03 |
---|---|
🤖 ChatGPT와 함께 공부하는 JavaScript 4일차 - 이미지 숨기기/보이기 토글 기능 미션 (0) | 2025.03.29 |
🤖 ChatGPT와 함께 공부하는 JavaScript 3일차 - 텍스트 컬러 변경 미션 (0) | 2025.03.27 |
🤖 ChatGPT와 함께 공부하는 JavaScript 1일차 - 버튼 누르면 배경이 바뀌는 미션 (1) | 2025.03.21 |