Javascript eval() 不起作用



我正在尝试构建一个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>

在 JavaScript 中,在严格模式的范围之外,你可以覆盖 JavaScript 函数关键字。在本例中,您将覆盖 eval 函数:

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

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

我还注意到您对使用parseInt功能没有100%的信心,您可以在此处阅读更多

内容

我认为问题是您正在尝试在由运算符组成的字符串上解析Int,因此问题:

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

最新更新