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>
我建立一個可配置的計算器,但/我有一些與我的邏輯得到它的行爲完全我怎麼想。我有兩個問題。的Javascript計算器保持與
問題1:我該如何改變我的邏輯,以便我可以替換「邪惡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 = "";
}
}
爲什麼有一個計時器(setTimeout)? – GitaarLAB 2013-03-08 07:49:11
因爲我稍後添加了雙擊功能。 – 2013-03-08 07:50:22
您可能只是想讓'操作員'按鈕通過parseFloat將輸入字符串讀入浮點數,並將其與var下一個數字一起存儲在var(或數組)中。如果你想輸入一個完整的公式而不使用eval,你需要一個解析器/詞法分析器來理解字符串。最後(爲了避免失望),你知道在javascript 0.1 + 0.2中不是(精確地)是0.3? – GitaarLAB 2013-03-08 08:01:08