3
<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>

私は構成可能な電卓を構築していますが、ロジックを使用して、希望どおりに動作させるようにしています。2 つの質問があります。

質問 1: "evil eval" を置き換えることができるようにロジックを変更するにはどうすればよいですか?

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

質問 #2 : 計算結果が表示された後、次の計算に入力された最初の数値が前の計算結果に連結されないように、この関数のロジックを変更するにはどうすればよいですか?

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 = "";
}

}
4

1 に答える 1

1

文字列を連結しています。parseInt / parseFloatを見てください。基数に注意してください。そうしないと、JavaScript が基数を推測しようとします...

于 2013-03-08T08:07:19.620 に答える