如何在PHP-jQuery中的DataTables中显示列的总和(其中所有值都是十进制值)?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在PHP-jQuery中的DataTables中显示列的总和(其中所有值都是十进制值)?相关的知识,希望对你有一定的参考价值。

在我的php-jQuery DataTable中,所有行中列的所有值都是十进制值,并且在十进制值之前还包含“₹”符号,如下所示:

+---------+
| Column  |
+---------+
| ₹ 1.20  |
+---------+
| ₹ 3.42  |
+---------+
| ₹ 9.07  |
+---------+

我想显示表格页脚上所有列的十进制值的总和,如下所示:

+----------------+
|     Column     |
+----------------+
|     ₹ 1.20     |
+----------------+
|     ₹ 3.42     |
+----------------+
|     ₹ 9.07     |
+----------------+
| ₹ 13.69 (Total)|
+----------------+  

我尝试使用“footerCallback”函数输出如上所示,但失败了:

"footerCallback": function ( row, data, start, end, display ) {
    var api = this.api(), data;

    // Remove the formatting to get integer data for summation
    var intVal = function ( i ) {
        return typeof i === 'string' ?
        i.replace(/[$,₹]/g, '')*1 :
        typeof i === 'string' ?
        i : 0.00;
    };

    // Total over this page
    pageTotal = api
    .column( 4, { page: 'current'} )
    .data()
    .reduce( function (a, b) {
         return intVal(a) + intVal(b);
     }, 0 );

     // Update footer
     $( api.column( 4 ).footer() ).html(
         '₹ '+pageTotal +' (Total)'
     );
 },  

它的结果如下表脚:

₹ NaN (Total)

请帮忙!

答案

您的intVal函数检查该值是否为字符串,是否将其转换为数字,但如果它已经是数字,则返回0。

Yu不使用整数,十进制数是浮点数,所以这不适合货币添加,因为它只返回整数。

删除你的整个intVal函数并替换为这样的东西,它所做的只是删除任何不是数字或小数点的东西:

var floatVal = function ( i ) {
    return i.replace( /[^d.]/g, '');
};

然后将pageTotal函数return intVal(a) + intVal(b);的这一行更改为this,这会将您的数字作为浮点数加在一起,而不是将它们相互追加:

return parseFloat(floatVal(a)) + parseFloat(floatVal(b));

以上是关于如何在PHP-jQuery中的DataTables中显示列的总和(其中所有值都是十进制值)?的主要内容,如果未能解决你的问题,请参考以下文章

如何仅在页面加载时禁用 DataTables 中的排序?

如何使用 ajax-datatables-rails 理解 Rails 中的包含

如何替换 jQuery DataTables 中的数据数组

如何在 jQuery DataTables 中的分页期间滚动到第一行

如何按 DataTables 中的隐藏列排序?

如何修复 php codeigniter 中的 DataTables 分页和搜索框?