Files
Marius Cerchez fe2b03b6b8 finish calculator
2026-04-23 06:32:10 +00:00

93 lines
2.0 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const display = document.querySelector("#display");
let previousNumber = 0;
let lastOperation = "";
function doOperation(operation, numA, numB) {
numA = Number(numA);
numB = Number(numB);
switch (operation) {
case "+":
return numA + numB;
break;
case "÷":
return numA / numB;
break;
case "×":
return numA * numB;
break;
case "-":
return numA - numB;
break;
}
}
//Set numbers logic
const numbers = document.querySelectorAll(".number");
numbers.forEach((number) => {
number.addEventListener("click", (event) => {
updateDisplay(event.target.innerText);
});
});
function updateDisplay(number) {
let currentResult = display.value;
if (currentResult === "0") {
display.value = number;
} else {
display.value += number;
}
}
function reset() {
display.value = "0";
previousNumber = "0";
lastOperation = "";
}
// Set clear button
const clearButton = document.querySelector(".clear");
clearButton.addEventListener("click", () => {
reset();
});
// Set backspace button
backspaceButton = document.querySelector(".backspace");
backspaceButton.addEventListener("click", () => {
let result = display.value;
result = result.slice(0, -1);
if (result.length === 0) {
result = "0";
}
display.value = result;
});
// Operations
const operators = document.querySelectorAll(".operator");
operators.forEach((operator) => {
operator.addEventListener("click", (event) => {
if (lastOperation) {
previousNumber = doOperation(
lastOperation,
previousNumber,
display.value,
);
} else {
previousNumber = Number(display.value);
}
display.value = "0";
lastOperation = event.target.innerText;
});
});
// Result button
const resultButton = document.querySelector(".result");
resultButton.addEventListener("click", (event) => {
if (lastOperation) {
display.value = doOperation(lastOperation, previousNumber, display.value);
}
});
reset();