我使用引导表来显示一堆数据,并希望在数据加载JSON之后总结一列。我想使用Javascript进行求和,以便在我将过滤器应用到表格时更新值(请参阅此处的过滤器扩展程序以获取示例http://wenzhixin.net.cn/p/bootstrap-table/docs/extensions.html。我目前正在尝试执行此操作使用jQuery each()函数,选择一个已应用于列中每个单元格的类,从每个元素中获取值并将其汇总为变量。
有没有人在使用引导程序表之前完成此操作?
这是我目前所拥有的(这最终会返回NaN):
function sum_revenue() {
var sum = 0;
// remove class from column header because it does not contain numbers
$('.revenue').first().removeClass('revenue');
$('.revenue').each(function(){
sum += parseInt($(this).val());
});
console.log(sum);
}
答案 0 :(得分:0)
这有效 -
var sum = 0;
// remove class from column header because it does not contain numbers
$('.revenue').first().removeClass('revenue');
$('.revenue').each(function(){
sum += parseFloat($(this).text());
});
console.log("$" + sum);
答案 1 :(得分:0)
执行订单存在问题。 JS将同时运行这两个块。您可以按如下方式同步执行此操作:
var sum = 0;
$('.revenue').each(function(index, value) {
//Remove the first "header element from sum
if(index !== 0) {
sum += parseInt($(this).html(), 10);
}
//Remove the class if you still need to
else {
$(this).removeClass('revenue');
}
});
console.log(sum);
这是一个小提琴:http://jsfiddle.net/a14rva0m/2/
或者你可以用一些疯狂的回调魔法来做到这一点。
答案 2 :(得分:0)
您可以使用.not过滤掉第一个元素:
var sum = 0;
$('.revenue').not(':first').each(function(){
sum += parseInt($(this).val());
});