我需要在DataTable页脚中计算时间,但是我只有this
"footerCallback": function(row, data, start, end, display) {
var api = this.api(),
data;
var intVal = function(i) {
return typeof i === 'string' ? i.replace(/[\$,]/g, '') * 1 : typeof i === 'number' ? i : 0;
};
totalhrs = api.column(3).data().reduce(function(a, b) {
return intVal(a) + intVal(b);
}, 0);
totalhrs_page = api.column(3, {
page: 'current'
}).data().reduce(function(a, b) {
return intVal(a) + intVal(b);
}, 0);
// Update footer
$('#totalHours').html("<b>" + "TOTAL Hours: " + totalhrs_page + "/" + totalhrs + "</b>");
}
正如您在演示中看到的那样,我在“已用小时数”列中获取了所有行的总和,我需要的是计算时间。当小数位数变为> = 60时,则应将整个数字+1。假设结果为23.82,则应为24.22。现在,当小数位达到100时,它只对整数+1。
有没有更简单的方法可以做到这一点?
谢谢!
最佳答案
您可以在减少功能中将其转换为分钟
totalhrs = api.column(3).data().reduce(function(a, b) {
b = b.split(".");
var hours = b[0]||0;
var min = b[1]||0;
return a + intVal(hours*60)+intVal(min);
}, 0);
totalhrs = Math.floor(totalhrs / 60)+"." + totalhrs % 60;