Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
让Javascript calculator只使用2个数字输入来执行类似(5-3+;2)的等式_Javascript_Calculator - Fatal编程技术网

让Javascript calculator只使用2个数字输入来执行类似(5-3+;2)的等式

让Javascript calculator只使用2个数字输入来执行类似(5-3+;2)的等式,javascript,calculator,Javascript,Calculator,我正在制作这个Javascript计算器,但我不知道如何让计算器做一个像5-(3+1),5-3+1这样的问题。 它只打印等式的5-3部分,而不是+1部分 这是我的密码: <html> <script> function calc() { var D = ""; var A = document.getElementById("num1").value; var B = document.getElementById("op").value; var C = parseIn

我正在制作这个Javascript计算器,但我不知道如何让计算器做一个像5-(3+1),5-3+1这样的问题。 它只打印等式的5-3部分,而不是+1部分 这是我的密码:

<html>
<script>
function calc()
{
var D = "";
var A = document.getElementById("num1").value;
var B = document.getElementById("op").value;
var C = parseInt(document.getElementById("num2").value);
if(B == "+")
{
    D = parseInt(A)+parseInt(C);
}
else if(B == "-")
{
    D = parseInt(A)-parseInt(C);
}
else if(B == "*")
{
    D = parseInt(A)*parseInt(C);
}
else if(B == "/")
{
    D = parseInt(A)/parseInt(C);
}
else
{
    alert("Error")
}
document.getElementById("result").value = parseInt(D);
}
function conteq()
{
var D = document.getElementById("result").value;
var E = "";
document.getElementById("num1").value = D;
document.getElementById("op").value = E;
document.getElementById("num2").value = E;
    document.getElementById("result").value = E;
}
function resetcalc()
{
    var E = "";
    document.getElementById("num1").value = E;
    document.getElementById("op").value = E;
    document.getElementById("num2").value = E;
    document.getElementById("result").value = E;
}
</script>

<body>
<table align="center">
<td>This is a basic Javascript Calculator.<br /></td></table>
<table align="center"><td>(Number 1)<input type="text" id="num1" align="middle" name="num1" />
</td>
<table align="center"><td>(Operator)<input type="text" align="middle" id="op" name="op" /></td>    </table>
<table align="center"> <td>(Number 2)<input type="text" align="middle" id="num2" name="num2" /></td>  </table>
<table align="center"> <td><input type="button" align="middle" value="=" onClick="calc()" /></td>    </table>
<table align="center"><td>(Result)<input type="text" id="result" name="result" readonly />
</td></table>

<table align="center"><td><input type="button" value="Set Answer to Number 1" onClick="conteq()"    /></td></table>
<table align="center"><td><input type="button" value="Reset" onClick="resetcalc()" /></td></table>
</table>
</p>
</body>
</html>

函数计算()
{
var D=“”;
var A=document.getElementById(“num1”).value;
var B=document.getElementById(“op”).value;
var C=parseInt(document.getElementById(“num2”).value);
如果(B==“+”)
{
D=parseInt(A)+parseInt(C);
}
如果(B==“-”),则为else
{
D=parseInt(A)-parseInt(C);
}
如果(B==“*”),则为else
{
D=parseInt(A)*parseInt(C);
}
如果(B==“/”),则为else
{
D=parseInt(A)/parseInt(C);
}
其他的
{
警报(“错误”)
}
document.getElementById(“结果”).value=parseInt(D);
}
函数conteq()
{
var D=document.getElementById(“结果”).value;
var E=“”;
document.getElementById(“num1”).value=D;
document.getElementById(“op”).value=E;
document.getElementById(“num2”).value=E;
document.getElementById(“结果”).value=E;
}
函数resetcalc()
{
var E=“”;
document.getElementById(“num1”).value=E;
document.getElementById(“op”).value=E;
document.getElementById(“num2”).value=E;
document.getElementById(“结果”).value=E;
}
这是一个基本的Javascript计算器。
(1号) (操作员) (2号) (结果)

您正在尝试将(转换为整数,但无法转换)(因为它不是):


如果我不理解这个问题,很抱歉,但是如果您在不同的字段中阅读两个数字和一个运算符,您将如何实现5-3+1表达式?或者您放置更多的数字和运算符字段,或者您在一个字段中解析整个表达式。parseInt不会处理括号,它会在发现不正确的内容后立即停止解析一个数字。你需要正确地解析语法。虽然(我怀疑这是为了学校作业)你可以作弊并直接使用eval()。尝试和实验OP的代码
eval()
是一个巨大的安全风险-最好的方法是使用预建库(例如)。当然eval()这是一个安全风险,但对于一个学校项目,我会把这个交上去。同时解释为什么它不好。你可能会因为是个聪明的屁股而得到“a:)你想用正则表达式a、B和C去掉任何不是数字公式的东西,以阻止人们向字段中注入
标记等。。。我只是介绍了最简单的表格。谢谢,但这不是学校作业。这是我在自己的时间里做的。
function calc()
{
    var D = "";
    var A = document.getElementById("num1").value;
    var B = document.getElementById("op").value;
    var C = document.getElementById("num2").value;

    D = eval(A + B + C);


    document.getElementById("result").value = D;
}