2010-11-21 19 views
0

如何在使用javascript的html窗體中確定正確數量的文本框(input type =「text」)。 我在這裏要做的是通過提供數量和價格來計算小計。如何使用javascript在窗體中知道文本框的數量

<script type="text/javascript"> 

function compute(){ 

var quant=new Array(); 
var price=new Array(); 
var stotal=new Array(); 
var tbox=new Array(); 
var elemlent=document.x.elements.length; 

var dib=elemlent /3; 
for(var i=0; i<dib; i++) 
{ 
quant[i] = document.x.elements['qty[i]'].value; 
price[i] = document.x.elements['cost[i]'].value; 
stotal[i]= quant[i] * price[i]; 
tbox[i] = document.x.elements['subtotal[i]']; 


if (tbox[i]) 
{ 
tbox[i].value = stotal[i]; 
} 
} 
} 
</script> 

<body> 

<table border="1"> 

<form name="x"> 
<th>QTY</th> 
<th>COST</th> 
<th>SUBTOTAL</th> 
<td>+</th> 
<?php 
for($i=0;$i<2;$i++){ 
?> 


<tr> 
<td><input type="text" name="qty[<?php echo $i; ?>]" value=""/></td> 
<td><input type="text" name="cost[<?php echo $i; ?>]" value=""/></td> 
<td><input type="text" name="subtotal[<?php echo $i; ?>]" value=""/></td> 
<td><img src="add-icon.png" onmouseover="compute();"></td> 
</tr> 
<?php } ?> 


</form> 
</table> 
</body> 

我只是似乎無法使這項工作,當我添加for循環。

你能看到我的代碼有什麼問題嗎?

回答

2

變化:

['qty[i]'] 

到:

['qty[' + i + ']'] 

和類似的其他的人作出上述作品。我建議你換<input>元素來提供ID,東西沿着這些線路:

<input type="text" id="qty[<?php echo $i; ?>]" name="qty[<?php echo $i; ?>]" value=""/> 

然後,而不是:

quant[i] = document.x.elements['qty[i]'].value; 

使用:

quant[i] = document.getElementById(['qty[' + i + ']']).value; 

還請注意,你會得到一個字符串,所以我想你想使用parseInt和/或parseFloat

即是這樣的:

quant[i] = parseFloat(document.getElementById(['qty[' + i + ']']).value); 

另請注意,你可能要考慮檢查錯誤(例如,如果有人在價格字段中輸入「qqaacc」而不是「123.45」)。

+0

使用parseInt和parseFloat時要小心:http://www.bennadel.com/blog/2012-Exploring-Javascript-s-parseInt-And-parseFloat-Functions.htm – 2010-11-21 05:21:56

相關問題