-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
27 lines (22 loc) · 863 Bytes
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
var formulaInput = document.getElementById("formula-input");
var calcHistDiv = document.getElementById("calc-history");
formulaInput.addEventListener("keyup", function (e) {
if (e.code === "Enter") calculate();
});
function calculate() {
var fm = formulaInput.value;
var formulaRegex = /^\d+(.\d+)?[+\-*/]{1}\d+(.\d+)?$/;
var formulaValid = formulaRegex.test(fm);
var resultText = "ERROR";
if (formulaValid) {
var answer;
eval("answer=" + fm);
resultText = fm + " = ";
resultText += answer % 1 > 0 ? answer.toFixed(2) : answer.toString();
}
var resultDiv = document.createElement("DIV");
resultDiv.appendChild(document.createTextNode(resultText));
if (!formulaValid) resultDiv.classList.add("invalid");
calcHistDiv.insertBefore(resultDiv, calcHistDiv.firstChild);
formulaInput.value = "";
}