如何在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中显示列的总和(其中所有值都是十进制值)?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 ajax-datatables-rails 理解 Rails 中的包含