我在使这个计算器与 eval 一起工作时遇到问题

I am having an issue with making this calculator work with eval

我必须让这个计算器与 eval 一起工作,但是我已经尝试以任何帮助都有效的方式多次使这个工作。

$(document).ready(function() {
  $(".digit").click(function() {
    var num = $(this).text();
    $("#calculation").text(num);
  });

  $(".operator").click(function() {
    var math = $(this).text();
    $("#calculation").text(math);
  });

  $(".clear").click(function() {
    var clear = $(this).text();
    $("#calculation").text("0");
  });
});

您将完全替换 #calculation 中的文本,而不是将其连接起来形成数学表达式。

试试下面的代码:

$(document).ready(function() {
  $(".digit").click(function() {
    var num = $(this).text();
    var calculation = $("#calculation").text();
    $("#calculation").text(calculation + num);
  });

  $(".operator").click(function() {
    var math = $(this).text();
    var calculation = $("#calculation").text();
    $("#calculation").text(calculation + match);
  });

  // ... remaining code truncated
});

单击 = 按钮后,您可以从 #calculation 中获取文本并将其作为参数传递给 eval 方法。你会得到你的答案。

好的,我们试试这个。

首先,您需要将表达式存储在某处。在全局变量中,例如:

var expression = "";

$(document).ready(function() {
...
});

然后您必须将数字和运算符附加到表达式,计算并显示结果。让我们为此创建一个函数:

function appendChar(char) {
    expression += char;
    var result;
    try {
        result = eval(expression);
    } catch (e) {
        // failure to evaluate
        result = "error";
    }
    $("#calculation").text(result);
}

最后,您必须按清除键清除表达式。这是完整的代码:

var expression = "";
function appendChar(char) {
    expression += char;
    var result;
    try {
        result = eval(expression);
    } catch (e) {
        // failure to evaluate
        result = "error";
    }
    $("#calculation").text(result);
}

$(document).ready(function() {

    $(".digit, .operator").click(function()    {
        appendChar($(this).text());
    });

    $(".clear").click(function()    {
        expression = "";
        $("#calculation").text("0");
    });
});

更新:

要显示发生了什么,您可以显示表达式和结果:

function appendChar(char) {
    expression += char;
    var result;
    try {
        result = eval(expression);
        $("#calculation").text(expression + " = " + result);
    } catch (e) {
        $("#calculation").text(expression);
    }
}