2010-07-29 79 views
0
<html> 
<head> 
<script language="javascript"> 
function fadd() 
{ 
var first,sec,res; 
first=parsefloat(document.forms[0].txt1st.value); 
sec=parsefloat(document.forms[0].txt2nd.value); 
res=first+sec; 
document.forms[0].txtres.value=res; 
} 
</script> 
</head> 


<body> 
<form> 
Enter 1st number &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input name="txt1st" id="txt1st" type="text"> 
</br> 
Enter 2nd number &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input name="txt2nd" id="txt2nd" type="text"> 
</br> 
Result &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp; 
<input name="txtres" id="txtres" type="text"> 
</br> 
<input name="btnadd" id="btnadd" type="button" value="+" onclick="fadd()"> 
<input name="btnsub" id="btnsub" type="button" value="-" onclick="fminus()"> 
<input name="btndiv" id="btndiv" type="button" value="%" onclick="fdiv()"> 
<input name="btnmul" id="btnmul" type="button" value="*" onclick="fmult()"> 
</form> 
</body> 
</html> 

回答

3

編輯:此問題已發佈在問題更新之前。

對於以數字開頭的屬性名稱,您不能使用點表示法。

請勿使用document.forms[0].1st。使用document.getElementById('1st')。這同樣適用於2nd

var x = {}; 

x['1st'] = 10; 

console.log(x['1st']); // This works 
console.log(x.1st); // This doesn't - Syntax error 
+0

+1,另外數字作爲ID中的第一個字符是無效的html .. – 2010-07-29 10:59:31

+1

@Gaby:是的,好點...另外,還有'parseFloat'問題,因爲[@strager identified](http:// stackoverflow.com/questions/3361694/need-help-on-simple-calculator/3361717#3361717) – 2010-07-29 11:00:44

3

兩件事情:

parsefloat應該parseFloat。函數名稱區分大小寫。

1st不是合法的ID(我認爲它也不是合法的名稱)。此外,您不能用點符號(x.y.z)引用非標識符(1st不是標識符,因爲它以數字開頭)。您可以嘗試document.forms[0]['1st'].value,或者您可以嘗試將1st重命名爲first(和2ndsecond)。

+0

謝謝我將parsefloat改爲parseFloat,它工作:) – sayuki288 2010-07-29 11:22:22

0

此外,你應該改變這一行:

document.forms[0].textres.value=res; 

要這樣:

document.forms[0].txtres.value=res; 

聽其他職位的建議在這裏和這樣做了以後,你的代碼應該工作正常。