我正在尝试使用fnFormatNumber
函数格式化数字,如下所示。但它在javascript控制台中打印Uncaught TypeError: undefined is not a function
。
我该如何解决这个问题?
<script>
$(document)
.ready(
function() {
$("#dataTables-expense")
.dataTable(
{
"order" : [ [ 1, "desc" ] ],
"aoColumnDefs" : [ {
"bSortable" : false,
"aTargets" : [ 0, 7 ]
} ],
'iDisplayLength' : 10,
"aLengthMenu" : [
[ 10, 15, 25, 50, 100,
250, 500, -1 ],
[ 10, 15, 25, 50, 100,
250, 500, "All" ] ],
"fnFormatNumber": function ( iIn ) {
if ( iIn < 1000 ) {
return iIn;
} else {
var
s=(iIn+""),
a=s.split(""), out="",
iLen=s.length;
for ( var i=0 ; i<iLen ; i++ ) {
if ( i%3 === 0 && i !== 0 ) {
out = "'"+out;
}
out = a[iLen-i-1]+out;
}
}
return out;
},
"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 === 'number' ? i
: 0;
};
// Total over all pages
data = api.column(3).data();
total = data.length ? data
.reduce(function(a,
b) {
return intVal(a)
+ intVal(b);
})
: 0;
// Total over this page
data = api.column(3, {
page : 'current'
}).data();
pageTotal = data.length ? data
.reduce(function(a,
b) {
return intVal(a)
+ intVal(b);
})
: 0;
// Update footer
$(api.column(3).footer())
.html(this.fnFormatNumber(pageTotal));
}
});
});
</script>
答案 0 :(得分:1)
这是因为fnFormatNumber
是初始化选项/设置对象的一部分,而不是数据表对象本身this
。
您可以通过fnSettings()
方法访问设置对象。变化
$(api.column(3).footer()).html(this.fnFormatNumber(pageTotal));
到
$(api.column(3).footer()).html(this.fnSettings().fnFormatNumber(pageTotal));
演示演示 - &gt;的 http://jsfiddle.net/q2GC3/ 强>