const display = document.querySelector('.calculator__display--intermediate'); // calculator__display 엘리먼트와, 그 자식 엘리먼트의 정보를 모두 담고 있습니다.
let firstNum, intermediateOperator, previousKey, previousNum;
buttons.addEventListener('click', function (event) {
// 버튼을 눌렀을 때 작동하는 함수입니다.
// ! 여기서부터 intermetiate & advanced 과제룰 풀어주세요.
const target = event.target; // 클릭된 HTML 엘리먼트의 정보가 저장되어 있습니다.
const action = target.classList[0]; // 클릭된 HTML 엘리먼트에 클레스 정보를 가져옵니다.
const buttonContent = target.textContent; // 클릭된 HTML 엘리먼트의 텍스트 정보를 가져옵니다.
const buttonContainerArray = buttons.children;
// ! 위 코드는 수정하지 마세요.
if (target.matches('button')) {
for (let i = 0; i < buttonContainerArray.length; i++) {
const childrenArray = buttonContainerArray[i].children;
for (let j = 0; j < childrenArray.length; j++) {
childrenArray[j].classList.remove('isPressed');
}
}
if (action === 'number') {
if (display.textContent === '0' || previousKey === 'operator' || previousKey === 'calculate') {
display.textContent = buttonContent;
} else {
display.textContent = display.textContent + buttonContent;
}
previousKey = 'number';
}
if (action === 'operator') {
target.classList.add('isPressed');
if (firstNum && intermediateOperator && previousKey !== 'operator' && previousKey !== 'calculate') {
display.textContent = calculate(firstNum, intermediateOperator, display.textContent);
}
firstNum = display.textContent;
intermediateOperator = buttonContent;
previousKey = 'operator';
}
if (action === 'decimal') {
if (!display.textContent.includes('.') && previousKey !== 'operator') {
display.textContent = display.textContent + '.';
} else if (previousKey === 'operator') {
display.textContent = '0.';
}
previousKey = 'decimal';
}
if (action === 'clear') {
firstNum = undefined;
intermediateOperator = undefined;
previousNum = undefined;
previousKey = 'clear';
display.textContent = '0';
}
if (action === 'calculate') {
if (firstNum) {
if (previousKey === 'calculate') {
display.textContent = calculate(display.textContent, intermediateOperator, previousNum);
} else {
previousNum = display.textContent;
display.textContent = calculate(firstNum, intermediateOperator, display.textContent);
}
}
previousKey = 'calculate';
}
}
});
advance 문제였는데 for문을 돌리는것.