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

问题描述 投票:0回答:1

在我的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)

请帮忙!

php jquery datatables
1个回答
0
投票

您的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));
© www.soinside.com 2019 - 2024. All rights reserved.