I’m working on a Calculator app. I'm collecting the numbers (1,2,3…) and operators (+,-,*,/, =) as parameters from html onclick method and using eval() in JavaScript to compute the expression. Something like this..
<button type="submit" class="button-style" onclick="myfunc('7')" id="seven"> 7 </button>
<button type="submit" class="button-style" onclick="myfunc('8')" id="eight"> 8 </button>
<button type="submit" class="button-style" onclick="myfunc('9')" id="nine"> 9 </button>
My JavaScript file:-
function myfunc(para) {
if (para != "=" && para != "AC" && para != "ERS" && para != "+/-") {
document.getElementById("user-input").innerHTML += para;
document.getElementById("user-input").style.display = "block";
} else if (para === "ERS") {
document.getElementById("user-input").innerHTML = document
.getElementById("user-input")
.innerHTML.slice(0, -1);
} else if (para === "AC") {
document.getElementById("user-input").innerHTML = " ";
document.getElementById("result").innerHTML = " ";
} else if (para === "+/-") {
let newvar = document.getElementById("user-input").innerHTML;
let anothervar = newvar * -1;
document.getElementById("user-input").innerHTML = anothervar;
} else {
let evaldata = document.getElementById("user-input").innerHTML;
let newevaldata = evaldata.replace(/^0+/, ""); //Omitting the leading zeroes
let resultData = eval(newevaldata);
let num = resultData.toFixed(2);
document.getElementById("result").innerHTML = num;
}
}
And this is how the calculator looks like:- Calculator
My question:
Everything is working fine except one strange issue.
Whenever I try to add 010+100
it shows the result as 108
or if I try 0000010+1000
the result is 1008
,
or 0023+3200
gives 3219
.
How is that possible and how to omit the preceding zeroes, I have tried with a regular expression but it doesn't work. Without having preceding zeros the app works just fine. I am stuck here. Please help me out. Thanks.
Here is a screenshot:- calculation error