Jquery在动态生成的表上总计行数

时间:2013-03-27 13:46:02

标签: javascript jquery dynamic sum

我有一些代码在数据插入现有行时附加新的表行。

您可以在行动here中看到代码。

在输入产品时,新行将附加到具有唯一输入名称的表格中。

然后要求用户输入价格和数量。

我想要的是两步计算。在输入框Total中,我希望该特定行的总和为price * qty。其次,我希望div grandtotal显示所有输入框的总和,所有输入框都是动态的,用户插入的行数。

通常我会使用:

function fill() {
    var txt8 = document.getElementById("TextBox8").value;
    var txt9 = document.getElementById("TextBox9").value;
    document.getElementById("TextBox10").value = txt8 + txt9;
}

但这是静态的静态表,其中名称和ID是已知的。如何使这个工作动态生成表?

道歉,我忘了给你一个小提琴链接:http://jsfiddle.net/yUfhL/230/

1 个答案:

答案 0 :(得分:2)

要获取ID为linetotal的所有输入,您可以在jQuery中编写以下内容:

$('input[id^=linetotal]')

现在,要计算总数,只需迭代集合:

var total = 0;
$('input[id^=linetotal]').each(function() { 
    total += parseInt(this.value, 10) || 0; 
});

您的输出,然后:

$('#grandtotal').text(total);

修改

要首先计算每一行的行总数,您可以像这样迭代它们:

$('table.order-list tr').each(function() {
   var price = parseInt( $('input[name=price]', this).val(), 10 );
   var qty   = parseInt( $('input[name=qty]'  , this).val(), 10 );
   $('input[id^=linetotal]', this).val(price * qty);
});

当然,您不必一直迭代所有行。在更改事件中,您只对当前行感兴趣,可以通过$(this).closest('tr')

访问该行