migrate to gtea from bistbucket
This commit is contained in:
80
public/assets/js/custom/calculator.js
Normal file
80
public/assets/js/custom/calculator.js
Normal file
@@ -0,0 +1,80 @@
|
||||
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
const display = document.getElementById("display");
|
||||
let currentExpression = "";
|
||||
|
||||
|
||||
function buttonClickHandler(event) {
|
||||
const buttonValue = event.target.innerText;
|
||||
|
||||
|
||||
if (buttonValue === "C") {
|
||||
currentExpression = "";
|
||||
}
|
||||
|
||||
else if (buttonValue === "⌫") {
|
||||
currentExpression = currentExpression.slice(0, -1);
|
||||
}
|
||||
|
||||
else if (buttonValue === "=") {
|
||||
try {
|
||||
currentExpression = calculate(currentExpression).toString();
|
||||
} catch {
|
||||
currentExpression = "Error";
|
||||
}
|
||||
}
|
||||
|
||||
else if (buttonValue === "√") {
|
||||
if (!currentExpression) {
|
||||
currentExpression = "Error";
|
||||
} else {
|
||||
currentExpression = Math.sqrt(parseFloat(currentExpression)).toString();
|
||||
}
|
||||
}
|
||||
|
||||
else if (buttonValue === "x²") {
|
||||
if (!currentExpression) {
|
||||
currentExpression = "Error";
|
||||
} else {
|
||||
currentExpression = Math.pow(parseFloat(currentExpression), 2).toString();
|
||||
}
|
||||
}
|
||||
|
||||
else {
|
||||
|
||||
if (currentExpression === "Error") {
|
||||
currentExpression = "";
|
||||
}
|
||||
currentExpression += buttonValue;
|
||||
}
|
||||
|
||||
|
||||
display.value = currentExpression;
|
||||
}
|
||||
|
||||
|
||||
function calculate(expression) {
|
||||
|
||||
expression = expression
|
||||
.replace(/×/g, "*")
|
||||
.replace(/÷/g, "/")
|
||||
.replace(/−/g, "-");
|
||||
|
||||
|
||||
try {
|
||||
const result = Function(`return (${expression})`)();
|
||||
if (result === Infinity || result === -Infinity || isNaN(result)) {
|
||||
throw new Error("Math Error");
|
||||
}
|
||||
return result;
|
||||
} catch {
|
||||
return "Error";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const calculatorButtons = document.querySelectorAll(".button-row button");
|
||||
calculatorButtons.forEach(button => {
|
||||
button.addEventListener("click", buttonClickHandler);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user