【问题标题】:I am having an issue with making this calculator work with eval我在使这个计算器与 eval 一起工作时遇到问题
【发布时间】:2023-04-05 13:24:01
【问题描述】:

我必须让这个计算器与 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");
  });
});

【问题讨论】:

  • 你想做什么?
  • 我正在尝试使用 eval 制作一个计算器(我以前从未使用过它)我对 jquery 还很陌生,我使用过教程等,但我什么也想不通

标签: javascript jquery eval calculator


【解决方案1】:

好的,让我们试试这个。

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

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);
}

最后,你必须清除带有 clear is press 的表达式。这是整个代码:

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);
    }
}

【讨论】:

  • 感谢分解,我明白这一点
  • 所以我理解上面的代码但是我将如何在按下等式按钮而不是自动显示等式时使等式按钮工作
  • @CharlieAxsom 是的,我认为使用相等按钮会更好
【解决方案2】:

您将完全替换 #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 方法。你会得到答案的。

【讨论】:

    猜你喜欢
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    相关资源
    最近更新 更多