有没有另一种方法可以让这个计算器在没有eval函数的情况下工作?

时间:2017-05-23 03:03:00

标签: javascript html css

我似乎无法想象如果没有它过于复杂我怎么能做到。我知道我需要创建一个数组并循环遍历它并找到运算符(x& /),并且实现BEDMAS也很不错。

<div class="display"><input type="text" size="36" id="display" readonly></div>
<div class="keys">

    <p>
        <input type="button" class="button" value="CE" onclick='backspace()'>
        <input type="button" class="button" value="x^2" onclick='power()'>
        <input type="button" class="button" value="%"  onclick='percentage("%")'>
        <input type="button" class="button" value="/" onclick='math("/")'>
    </p>

    <p>
        <input type="button" class="button" value="7" onclick='math("7")'>
        <input type="button" class="button" value="8" onclick='math("8")'>
        <input type="button" class="button" value="9" onclick='math("9")'>
        <input type="button" class="button" value="x" onclick='math("*")'>
    </p>

    <p>
        <input type="button" class="button" value="4" onclick='math("4")'>
        <input type="button" class="button" value="5" onclick='math("5")'>
        <input type="button" class="button" value="6" onclick='math("6")'>
        <input type="button" class="button" value="-" onclick='math("-")'>
    </p>
    <p>
        <input type="button" class="button" value="1" onclick='math("1")'>
        <input type="button" class="button" value="2" onclick='math("2")'>
        <input type="button" class="button" value="3" onclick='math("3")'>
        <input type="button" class="button" value="+" onclick='math("+")'>
    </p>

    <p>
        <input type="button" class="button" value="0" onclick='math("0")'>
        <input type="button" class="button" value="." onclick='math(".")'>
        <input type="button" class="button" value="C" onclick='c("")'>
        <input type="button" class="button" value="=" onclick='e()'>
    </p>



function c(val){
document.getElementById("display").value = val;
}
function math(val){
document.getElementById("display").value += val;
}
function e(){
try{
    c(eval(document.getElementById("display").value))
}
catch(e){
c('Error')
}
}
function backspace() {
var value = document.getElementById("display").value    
document.getElementById("display").value = value.substring(0, value.length 
-1);
}
function power() {
var value = document.getElementById("display").value;
var value = document.getElementById("display").value = (value * value);
}
function percentage() {
var value = document.getElementById("display").value;
var value = document.getElementById("display").value = (value / 100);
}

1 个答案:

答案 0 :(得分:1)

是的!不要重新发明这一点。使用内置表达式解析器的math.js之类的东西。

math.eval(/* put your concatenated expression here */)