除了第一个,所有带有类的元素的值和

时间:2015-01-30 19:15:57

标签: javascript twitter-bootstrap

我使用引导表来显示一堆数据,并希望在数据加载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);

}

3 个答案:

答案 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());
});