Javascript 如何更改一个表的总计

Javascript 如何更改一个表的总计,javascript,jquery,Javascript,Jquery,我现在真的不知道如何只使用jquery/javascript脚本计算第一个表的总计 基于以下来源的代码: 代码如下: 在表中执行计算 $(函数(){ $('.pnm、.price、.subtomt、.grdtot').prop('readonly',true); 变量$tblrows=$(“#tblProducts tbody tr”); $tblrows.每个(功能(索引){ 变量$tblrow=$(本); $tblrow.find('change',function()上的'.qty')

我现在真的不知道如何只使用jquery/javascript脚本计算第一个表的总计

基于以下来源的代码:

代码如下:


在表中执行计算
$(函数(){
$('.pnm、.price、.subtomt、.grdtot').prop('readonly',true);
变量$tblrows=$(“#tblProducts tbody tr”);
$tblrows.每个(功能(索引){
变量$tblrow=$(本);
$tblrow.find('change',function()上的'.qty'){
var qty=$tblrow.find(“[name=qty]”)。val();
var price=$tblrow.find(“[name=price]”)val();
var小计=parseInt(数量,10)*parseFloat(价格);
如果(!isNaN(小计)){
$tblrow.find('.subtot').val(小计toFixed(2));
var-grandTotal=0;
$(“.subtot”)。每个(函数(){
var stval=parseFloat($(this.val());
总计+=isNaN(标准值)?0:标准值;
});
$('.grdtot').val(grandTotal.toFixed(2));
}
});
});
});
产品
量
价格
小计


产品 量 价格 小计
在更新当前表之前,只需选择当前表中的
.subtot
输入。试试这个

$(函数(){
$('.pnm、.price、.subtomt、.grdtot').prop('readonly',true);
$('table')。每个(函数(){
变量$tbl=$(本);
var$tblrows=$tbl.find('tbody tr');
$tblrows.每个(功能(索引){
变量$tblrow=$(本);
$tblrow.find('change',function(){
var qty=$tblrow.find(“[name=qty]”)。val();
var price=$tblrow.find(“[name=price]”)val();
var小计=parseInt(数量,10)*parseFloat(价格);
如果(!isNaN(小计)){
$tblrow.find('.subtot').val(小计toFixed(2));
var-grandTotal=0;
$tbl.find(“.subtot”)。每个(函数(){
var stval=parseFloat($(this.val());
总计+=isNaN(标准值)?0:标准值;
});
$tbl.find('.grdtot').val(grandTotal.toFixed(2));
}
});
});
});
});

在表中执行计算
产品
量
价格
小计


产品 量 价格 小计
在jquery选择器中,只需添加表id,如果有多个表,则可以将代码包装到一个函数中


函数addTotal(tableID){
$('.pnm、.price、.subtomt、.grdtot').prop('readonly',true);
变量$tblrows=$(表ID+“tbody tr”);
$tblrows.每个(功能(索引){
变量$tblrow=$(本);
$tblrow.find('change',function()上的'.qty'){
var qty=$tblrow.find(“[name=qty]”)。val();
var price=$tblrow.find(“[name=price]”)val();
var小计=parseInt(数量,10)*parseFloat(价格);
如果(!isNaN(小计)){
$tblrow.find('.subtot').val(小计toFixed(2));
var-grandTotal=0;
$(tableID+“.subtot”)。每个(函数(){
var stval=parseFloat($(this.val());
总计+=isNaN(标准值)?0:标准值;
});
$(tableID+'.grdtot').val(grandTotal.toFixed(2));
}
});
});
}
加总(“待定产品”);

添加事件侦听器确实不需要在行上循环

您可以在handler函数中使用
closest()
来隔离元素所在的行和表,然后使用
find()

$('.pnm、.price、.subtomt、.grdtot').prop('readonly',true);
$('.qty')。在('change',function()上{
var$row=$(this).closest('tr'),
数量=$(this).val(),
price=$row.find(“.price”).val(),
小计=parseInt(数量,10)*parseFloat(价格);
如果(!isNaN(小计)){
$row.find('.subtot').val(subTotal.toFixed(2));
var-grandTotal=0;
var$table=$row.closest('表')
$table.find(“.subtot”)。每个(函数(){
var stval=parseFloat($(this.val());
总计+=isNaN(标准值)?0:标准值;
});
$table.find('.grdtot').val(grandTotal.toFixed(2));
}
});

产品
量
价格
小计


产品 量 价格 小计