Javascript计算器保持连接计算结果与为下一次计算输入的第一个数字 [英] Javascript calculator keeps concatenating calculation results with first number entered for next calculation

查看:48
本文介绍了Javascript计算器保持连接计算结果与为下一次计算输入的第一个数字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

<body>
<FORM NAME="Calculator">
<TABLE BORDER=4>
<TR>
<TD>
<input type="text"   name="Input" Size="22" value="">


<br>
</TD>
</TR>
<TR>
<TD>
<INPUT TYPE="button" NAME="one"   VALUE="1" class ="digit" >
<INPUT TYPE="button" NAME="two"   VALUE="2" class ="digit" >
<INPUT TYPE="button" NAME="three" VALUE="3" class ="digit" >
<INPUT TYPE="button" NAME="plus"  VALUE="+" class ="operand">
<br>
<INPUT TYPE="button" NAME="four"  VALUE="4" class ="digit">
<INPUT TYPE="button" NAME="five"  VALUE="5" class ="digit">
<INPUT TYPE="button" NAME="six"   VALUE="6" class ="digit">
<INPUT TYPE="button" NAME="minus" VALUE="-" class="operand">
<br>
<INPUT TYPE="button" NAME="seven" VALUE="7" class ="digit">
<INPUT TYPE="button" NAME="eight" VALUE="8" class ="digit">
<INPUT TYPE="button" NAME="nine"  VALUE="9" class ="digit">
<INPUT TYPE="button" NAME="times" VALUE="*" class ="operand">
<br>
<INPUT TYPE="button" NAME="clear" VALUE="c" class ="special">
<INPUT TYPE="button" NAME="zero"  VALUE="0" class ="digit">
<INPUT TYPE="button" NAME="Execute"  VALUE="=" class ="solve">
<INPUT TYPE="button" NAME="div"   VALUE="/" class ="operand">
<br>
</TD>
</TR>
</TABLE>
</FORM>

<script type = "text/javascript" src="C:\Users\Quonn\Desktop\QBJS\calculatorjs.js">
</script>
</body>

我正在构建一个可配置的计算器,但我正在使用我的逻辑/让它完全表现如何我想要。我有两个问题。

I am building a configurable calculator but I am having some with my logic/getting it to behave exactly how i want. I have two questions.

问题#1:如何更改逻辑以便我可以替换邪恶评估?

Question # 1: How can I change my logic so that I can replace "evil eval"?

var timer;
document.onclick = function(x) {
var info = x.target;
clearTimeout(timer);
 timer= setTimeout(function(){addDigit(x);},200);
}

问题#2 :如何改变我的逻辑在此函数中,以便在显示计算结果后,为下一次计算输入的第一个数字不仅仅与先前计算的结果连接?

Question #2: How can change my logic in this function so that after a calculation result is displayed, the first number entered for the next calculation isn't just concatenated to the previous calculation's result?

function addDigit(x){
if (x.target.className === "digit" || x.target.className ==="operand") {
    document.Calculator.Input.value += "" + x.target.value;
}

else if (x.target.className === "solve") {
    result = eval(document.Calculator.Input.value);
    document.Calculator.Input.value = result;
}
else  {
   document.Calculator.Input.value = "";
}

}


推荐答案

您正在连接字符串。您应该查看 parseInt / parseFloat ;注意基数,否则JavaScript会试着猜测它......

You are concatenating strings. You should have a look at parseInt / parseFloat; watch out for the radix, otherwise JavaScript will try to guess it...

这篇关于Javascript计算器保持连接计算结果与为下一次计算输入的第一个数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆