我正在为课堂做一个基本的计算器(比如谷歌,当你输入"计算器"在浏览器中)时,我目前陷入了减法操作。简要说明:当我点击#buttonless时,变量" num1"存储,然后"屏幕"归零。然后,当我点击#buttonequal,变量" num2"也存储,从那里jQuery减去两个数字。
问题是,当我按照结果给出另一个减法时,而不是减去计算器对这两个数字求和。
$("#buttonless").click(function(){
var num1, num2, resultado;
num1=parseFloat($("#screen").val());
$("#screen").val(0);
$("#buttonequal").click(function(){
num2=parseFloat($("#screen").val());
resultado=num1-num2;
$("#screen").val(resultado);
num1=0;
num2=0;
});
});
我在代码的底部发出警告,发现在第二次减法时(问题出现的地方),程序减去0,这似乎是" num1"当时,到#34; num2",然后" num1"取而代之的是我之前给出的结果,因此有点"添加"数字。
例如:我执行操作3-1,并给出2.但是当我尝试将1减去2(2-1)时,我给出了3而不是1。
任何帮助将不胜感激。提前谢谢。
答案 0 :(得分:2)
您在另一个内部使用了一个事件处理程序。试试这个:
var num1, num2, resultado;
$("#buttonless").click(function(){
num1=parseFloat($("#screen").val());
$("#screen").val(0);
});
$("#buttonequal").click(function(){
num2=parseFloat($("#screen").val());
resultado=num1-num2;
$("#screen").val(resultado);
num1=0;
num2=0;
});
如果U可以提供演示,那么理解问题会更容易。
答案 1 :(得分:1)
当您点击#buttonless
时,您为#buttonequal
创建了一个新的点击处理程序。所以第二次,点击处理程序将被调用两次,一次使用他第一次调用时的num1
值(然后将结果放入#screen
),第二次使用新的{{1 value(和第一个减法的结果,而不是你输入的值)。
使用num1
,或仅设置一次点击处理程序(即,不在第一个单击处理程序中)。在后一种情况下,您将更改.once
变量的范围(并存储当前操作,因为您可能不仅仅是减法,我猜)。
答案 2 :(得分:0)
感谢所有人的反馈!我设法最终以这种方式做到了:
$("#buttonless").click(function(){
resta=1;
num1=parseFloat($("#screen").val());
$("#screen").val(0);
});
$("#buttonequal").click(function(){
num2=parseFloat($("#screen").val());
if(suma==1){
resultado=num1+num2;
}
else if(resta==1){
resultado=num1-num2;
}
else if(multiplicacion==1){
resultado=num1*num2
}
else if(division==1){
resultado=num1/num2;
}
$("#screen").val(resultado);
});