Undefined при расчете процента в калькуляторе на js
Я пишу для петпроекта калькулятор. При подсчете процента у меня пишет undefind. При введении в основное поле(displayScreen) вводятся первое число - операция - второе число, первое число уходит в numA, второе в numB, результат отражается в displayResult. Все операции, кроме процентов, правильно считаются. При подсчете процентов в numA идет просто число, в numB идет numB.value = (+numA.value * +numB.value) / 100. При нажатии равно в displayResult получаю undefined. Что пошло не так?
Полный код с html, css, js тут на codepen
digits.forEach((item, i) => {
item.addEventListener("click", (e) => {
//нажата кнопка калькулятора All Clear / C
// if (e.target.classList.contains("#clearAll")) return;
let digitValue = +digits[i].value;
displayScreen.value += digitValue;
if (numA.value !== NaN && sign === "") {
numA.value = displayScreen.value;
} else if (numA.value !== "" && sign !== "") {
numB.value += +digitValue;
}
console.log(+numA.value);
console.log(typeof +numA.value);
console.log(+numB.value);
console.log(typeof +numB.value);
});
});
op.forEach((item, i) => {
item.addEventListener("click", (e) => {
if (operator.includes(item.value)) {
sign = item.value;
displayScreen.value += item.value;
finish = true;
console.log(sign);
}
`if (sign === "%") {
percent();
}`
});
});
`function percent() {
numB.value = (+numA.value * +numB.value) / 100;
console.log(+numB.value);
console.log(typeof +numB.value);
}`
//выполнение вычислений
let result;
function calc() {
switch (sign) {
case "+":
result = +numA.value + +numB.value;
console.log(+numB.value);
console.log(typeof +numB.value);
break;
case "-":
result = +numA.value - +numB.value;
// console.log(result);
break;
case "*":
result = +numA.value * +numB.value;
// console.log(result);
break;
case "/":
result = +numA.value / +numB.value;
// console.log(result);
break;
case "^":
result = Math.pow(+numA.value, +numB.value);
// console.log(result);
break;
default:
break;
}
displayResult.value = result;
numA.value = "";
numB.value = "";
console.log(+numB.value);
console.log(result);
console.log(typeof result);
console.log(typeof displayResult.value);
}
document.querySelector(".calc").addEventListener("click", calc);```
Ответы (1 шт):
Автор решения: RSK
→ Ссылка
Вы забыли case для % добавить
case "%":
result = +numA.value * (+numB.value/100);
break;
Я добавил и всё работает. 10 % 100 вывело 10