실습01: 추가 버튼 클릭 > 햄버거 추가 / 제거 버튼 클릭 > 리스트 삭제
코드: https://github.com/hanhyochan/study-javascript/tree/master/10%ED%9A%8C%EC%B0%A8


기존 예제는 똑같은 멘트에 추가된 햄버거 갯수만 띄우는 방식이었다. (아래)

지정한 햄버거 이름이 무작위로 나오는 버전으로 업그레이드 시켜보았다.
우선 코드를 쓰기 전에 어떤 기능을 넣을 것인지 계획을 먼저 세웠다.
다음엔 어떻게 구현할 것인지 계획을 세웠다.
코드 풀이
변수 선언
const itemList = document.querySelector('ul');
const addBtn = document.querySelector('#addBtn');
const removeBtn = document.querySelector('#removeBtn');
const Hamburger_counting = document.querySelector('.Hamburger_counting');
const title = document.querySelector('.title')
const popup = document.querySelector('.popUp')
const popup_yes = document.querySelector('.popup_yes')
const popup_no = document.querySelector('.popup_no')
햄버거 갯수 세기
const hamburgers = ['불고기버거', '치킨버거', '치즈버거', '새우버거', '코딩버거', '카레버거', '콩고기버거',
'야채버거']
const new_hamburger_Array = [];
function count_hamburger() {``
if (new_hamburger_Array.length === 0) {
num.textContent = ``
} else {
Hamburger_counting.textContent = `${new_hamburger_Array.length}개의 버거를 추가하셨습니다.`
}
}
햄버거 추가
function addItem() {
const li = document.createElement('li')
let rn = Math.random();
let rn_hamburger = Math.floor(rn * hamburgers.length)
let new_hamburgers = hamburgers[rn_hamburger]
new_hamburger_Array.push(new_hamburgers)
li.innerHTML = `${new_hamburgers}`
itemList.appendChild(li)
count_hamburger()
}
햄버거 제거 및 팝업 관리
function removeItem() {
new_hamburger_Array.pop()
const liElement = itemList.getElementsByTagName('li')
if (liElement.length > 0) {
itemList.removeChild(liElement[liElement.length -1])
}
count_hamburger()
}
function popUpOn() {
popup.classList.toggle('show');
console.log(popup.classList.contains('show'));
}
function popup_yes_click() {
popup.classList.add('show');
location.reload();
}
function popup_no_click() {
popup.classList.add('show');
}
addBtn.addEventListener('click', addItem);
removeBtn.addEventListener('click', removeItem);
title.addEventListener('click', popUpOn);
popup_yes.addEventListener('click', popup_yes_click);
popup_no.addEventListener('click', popup_no_click);
회고: 코드 짜기 전 어떤 기능을 만들건지, 그 기능을 어떻게 구현할 건지 미리 계획을 짜고 움직이니 헤메는 시간도 줄이고 훨씬 효율적인 느낌이었다. 작업을 체계적으로 할 수 있는 느낌이라 실무에서도 간략하게라도 계획을 짜서 움직이는게 낫겠다는 생각이 들었다. 앞으로 이런 자세로 공부해야겠다.
그리고 구상한 계획이 계획대로 잘 구동해줘서 기뻤다. 시간 오래걸릴 줄 알았는데 생각보다 안 걸렸다. 실력이 조금 오른 느낌이다.
예제에서 그치지 않고 스스로 생각하여 업그레이드 시키니 훨씬 머리에 잘 들어온 느낌이다.
'플러스 알파!' 라는 내 좌우명처럼 플러스 알파로 더 많이 공부할 예정이다.