Javascript计算器 - eval()不工作

时间:2017-10-22 16:34:50

标签: javascript calculator

我正在尝试构建一个Javascript计算器,但由于eval()无法使用我正在使用的方式,因此无法正常工作。在我的控制台中,它给了我输入字段的单个值。以下是我正在使用的代码。

    <!DOCTYPE html>
<html>
<head>
    <title>Test</title>
</head>
<body>
    <input type="text" name="" disabled="true" id="inputField">
    <button id="btn5" value="5">5</button>
    <button id="btn2" value="2">2</button>
    <button id="operator" value="+">+</button>
    <button id="eval">=</button>
</body>

<script type="text/javascript">
    var btn5 = document.getElementById('btn5');
    var btn2 = document.getElementById('btn2');
    var inpField = document.getElementById('inputField');
    var operator = document.getElementById('operator');
    var eval = document.getElementById('eval');

    btn5.addEventListener('click', btn5Function);
    btn2.addEventListener('click', btn2Function);
    operator.addEventListener('click', operatorFunction);
    eval.addEventListener('click', evalFunction)
    //inpField.value = "";

    function btn5Function() {
        inpField.value += btn5.value;
    }

    function btn2Function() {
        inpField.value += btn2.value;
    }

    function operatorFunction() {
        inpField.value += operator.value;
    }

    function evalFunction() {
        var storeVal = parseInt(inpField.value);
        console.log(storeVal);
        var cal = eval(storeVal);
        inpField.value = cal;
        }

</script>

</html>

2 个答案:

答案 0 :(得分:2)

在JavaScript中,超出严格模式的范围,您可以覆盖JavaScript 功能关键字。在这种情况下,您将覆盖eval函数:

var eval = document.getElementById('eval');

重命名该变量会导致问题消失。

我还注意到您对parseInt功能的使用没有百分之百的信心,您可以阅读更多here

答案 1 :(得分:0)

我认为问题是你正在尝试对由运算符组成的字符串进行parseInt,因此问题是:

var storeVal = parseInt(inpField.value);  <-- this will not work.