问题: 我有一个包含4列的html表(名称,价格,数量,价值)。数量字段具有输入标记。基本上有人在数量字段中写入一个数字,然后点击一个按钮,脚本应该将每行中的Price和Quantity单元格相乘,并将其写入相应的值单元格中。然后它应该最终添加所有值,然后在表之后写入它。
看起来很简单,但我无法从javascript / jquery文档中找到它。
这是我的HTML代码:
<form>
<table border="0" cellspacing="0" cellpadding="2" width="400" id="mineraltable">
<tbody>
<tr>
<td valign="top" width="154">Ore</td>
<td valign="top" width="53">Price Per Unit</td>
<td valign="top" width="93">Quantity</td>
<td valign="top" width="100">Value</td></tr>
<tr>
<td valign="top" width="154"><strong>Arkonor</strong></td>
<td id="11" valign="top" width="53">1</td>
<td valign="top" width="93"><input name="12"></td>
<td id="13" valign="top" width="100"> </td></tr>
//Lots more of these rows... all Price rows have an ID with a 1 at the end, i.e. 21, 31, 41,. ....,
//all the text inputs have a 2 at the end of the name, and all Values have a 3 at the end.
</tbody></table></form>
<p id="result">Your value is: </p>
<button type="button">Calculate</button>
答案 0 :(得分:1)
我已经在jsfildde here上为你做了一个基本的解决方案。
注意我稍微清理了你的HTML。
你必须做额外的工作来检查无效输入等,但你应该明白这一点。
HTML:
<table border="0" cellspacing="0" cellpadding="2" width="400" id="mineraltable">
<thead>
<tr>
<td valign="top" width="154">Ore</td>
<td valign="top" width="53">Price Per Unit</td>
<td valign="top" width="93">Quantity</td>
<td valign="top" width="100">Value</td></tr>
<tr>
</thead>
<tbody>
<td valign="top" width="154"><strong>Arkonor</strong></td>
<td class="price" id="11" valign="top" width="53">1</td>
<td class="quantity" valign="top" width="93"><input name="12" value="1"></td>
<td class="value" id="13" valign="top" width="100"> </td>
</tr>
</tbody>
</table>
<p id="result">Your value is: </p>
<button type="button">Calculate</button>
使用Javascript:
$('button').click(function() {
var total = 0;
$('#mineraltable tbody tr').each(function(index) {
var price = parseInt($(this).find('.price').text());
var quantity = parseInt($(this).find('.quantity input').val());
var value = $(this).find('.value');
var subTotal = price * quantity;
value.text(subTotal);
total = total + subTotal;
});
$('#result').text('Your value is: '+total);
});