Javascript 数学运算作为变量?

Javascript 数学运算作为变量?,javascript,Javascript,我正在用JS在网页上制作一个计算器,我想知道是否可以这样做: 我有5个操作按钮,每个都像 <button name="operation" onclick="operation(+)">+</button> <button name="operation" onclick="operation(-)">-</button> 然后在equals函数中,我会得到这个 function equals() { var num2 = [contents

我正在用JS在网页上制作一个计算器,我想知道是否可以这样做: 我有5个操作按钮,每个都像

<button name="operation" onclick="operation(+)">+</button>
<button name="operation" onclick="operation(-)">-</button>
然后在equals函数中,我会得到这个

function equals() {
  var num2 = [contents of display]
  document.getElementById("display").value = num1 operation num2;
}
像‘num1操作num2’这样的东西是可能的,还是我需要很多单独的函数


如果出于某种原因想查看我的计算器的当前状态,请单击。(紫色的操作按钮和equals按钮都没有做任何事情,ofc)。

操作(+)的语法不是有效的javascript

如果要以这种方式继续,应使用字符串来确定操作,例如:

onclick=“operation(+”)”

然后在您的函数
操作中
有如下内容:

功能操作(操作员){
变量num1=。。。
var num2=…//无论您如何检索这些值
如果(运算符=“+”){
document.getElementById(“显示”).value=num1+num2;
}
else if(运算符=“-”){
…//我也是-
}
//等等
}

Javascript不会接受您的
操作(+)
,因为它是无效的表达式

一个更好的解决方案可能是使用开关盒进行如下操作:

function operation(value1, value2, operator){
    switch (operator){
        //addition case
        case '+':
            return value1 + value2;
            break;
        //subtraction case
        case '-':
            return value1 - value2;
            break;
        //moltiplication case
        case '*':
            return value1 * value2;
            break;
        //division case
        case '/':
            return value1 / value2;
            break;
        //default case (this should never happen but who knows)
        default:
            return 'err';
            break;
    }
}


希望有帮助;)

将与按钮关联的所有字符放入字符串中。单击“相等”按钮时,解析并求值,然后显示答案HMM。。。我不知道你的意思,因为我对JS很陌生。。。你能详细说明一下吗@Dominiqueforti无法确定需要两个函数的原因。但在从按钮单击中获得字符串+或-后,只需在操作函数中声明两个变量,然后使用符号确定用于声明希望传递到HTML正文中的#display元素的值的符号。请尝试编写代码,然后将其更新为答案,或者如果需要代码示例,请告诉我。您需要了解编译et自动机。但简单地说,假设你有
67+5
,你读第一个字符(6);是数字吗?是的,你继续。你读下一个字符(7);是数字吗?是的,你继续。您读取下一个字符(+);是数字吗?不,所以前两个字符是数字,所以为结果创建一个变量(67)。下一个字符(+)是运算符,因此您可以在操作变量中使用它。等等…@optimalresource,你是说我应该有一堆如果,还是别的什么?“使用符号确定符号”是什么意思?当我将“onclick(“operation(+')”)更改为“onclick=“operation(+')”)时,这种方法最有效。不过我还是要问一个问题,我是否应该继续使用else if?因为@benterrisIt不起作用,因为您没有在函数之间存储值num1、num2和运算符。您应该在javascript的顶部添加类似于
var num1=null
var num2=null
var op=null
的内容,以便在函数之前声明变量,并使用这些变量存储值:例如,在函数
go
中,使用
num2=document.getElementById(“显示”).价值(不带
var
,因为这意味着重新定义变量)
function operation(value1, value2, operator){
    switch (operator){
        //addition case
        case '+':
            return value1 + value2;
            break;
        //subtraction case
        case '-':
            return value1 - value2;
            break;
        //moltiplication case
        case '*':
            return value1 * value2;
            break;
        //division case
        case '/':
            return value1 / value2;
            break;
        //default case (this should never happen but who knows)
        default:
            return 'err';
            break;
    }
}