2013-03-08 22 views
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 = ""; 
} 

} 
+0

爲什麼有一個計時器(setTimeout)? – GitaarLAB 2013-03-08 07:49:11

+0

因爲我稍後添加了雙擊功能。 – 2013-03-08 07:50:22

+0

您可能只是想讓'操作員'按鈕通過parseFloat將輸入字符串讀入浮點數,並將其與var下一個數字一起存儲在var(或數組)中。如果你想輸入一個完整的公式而不使用eval,你需要一個解析器/詞法分析器來理解字符串。最後(爲了避免失望),你知道在javascript 0.1 + 0.2中不是(精確地)是0.3? – GitaarLAB 2013-03-08 08:01:08

回答

1

您正在連接字符串。你應該看看parseInt/parseFloat;注意基數,否則JavaScript會嘗試猜測它...

+0

現在看看。謝謝! – 2013-03-08 08:20:32