Javascript 访问Datatables中函数的表单元格属性
我有下表。 如您所见,对于某些列,我必须在表尾显示Average/Total。我的代码适用于没有特殊格式的列,但是当有特殊格式时,比如我们必须为负值显示NEG,在这种情况下,计算的值是不正确的。所以我为所有单元格添加了数据值属性。现在我想访问footerCallback中函数的每个单元格的数据值属性 这是表中一个示例单元格的html代码Javascript 访问Datatables中函数的表单元格属性,javascript,jquery,datatables,Javascript,Jquery,Datatables,我有下表。 如您所见,对于某些列,我必须在表尾显示Average/Total。我的代码适用于没有特殊格式的列,但是当有特殊格式时,比如我们必须为负值显示NEG,在这种情况下,计算的值是不正确的。所以我为所有单元格添加了数据值属性。现在我想访问footerCallback中函数的每个单元格的数据值属性 这是表中一个示例单元格的html代码 <td data-value="-3.78" class="red"> NEG </td> 负数 这是我的回调代码 "f
<td data-value="-3.78" class="red">
NEG
</td>
负数
这是我的回调代码
"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) {
if (typeof i === 'string') {
//remove most useless characters
i = i.replace(/[\$,\),\-,\%,\NEG]/g, '');
//now replace ( with MIN
i = i.replace('(', 'MIN');
//check if i contains MIN, then remove it and multiply it with -1 to make it a negative number
if (i.includes("MIN")) {
i = i.replace('MIN', '');
i = i * (-1);
}
}
return typeof i === 'string' ? i.replace(/[\$,\),\%,\NEG]/g, '') * 1 : typeof i === 'number' ? i : 0;
};
var functionColumns = [@(string.Join(",", MathableColumns.Where(x => !string.IsNullOrEmpty(x))))];
for (var i = 0; i < functionColumns.length; i++) {
var colIndex = functionColumns[i];
total = api
.column(colIndex)
.data()
.reduce(function(a, b) {
return intVal(a) + intVal(b);
}, 0);
total = total.toFixed(2);
if (total < 0)
{
total = total * -1;
$(api.column(colIndex).footer()).html(
'('+total+')'
);
}
else
{
$(api.column(colIndex).footer()).html(
total
);
}
}
},
“footerCallback”:函数(行、数据、开始、结束、显示){
var api=this.api(),
数据;
//删除格式以获取求和的整数数据
var intVal=函数(i){
if(typeof i=='string'){
//删除最无用的字符
i=i.replace(/[\$,\),\-,\%,\NEG]/g',);
//现在替换为(最小值)
i=i.替换('(','MIN');
//检查我是否包含MIN,然后将其移除,并将其与-1相乘,使其成为负数
如果(i.包括(“最低”)){
i=i.替换('MIN','');
i=i*(-1);
}
}
返回typeof i=='string'?i.replace(/[\$,\),\%,\NEG]/g',)*1:typeof i=='number'?i:0;
};
var functionColumns=[@(string.Join(“,”,MathableColumns.Where(x=>!string.IsNullOrEmpty(x)))];
对于(var i=0;i
我做了一些研究,但找不到解决方案。看看这个小提琴-,我相信这就是你想要的。代码的关键部分是:
totalValues = api.column(2).nodes().toArray().map(function(node) {
return $(node).attr('data-value');
});
这将收集该列的jQuery节点,提取属性,然后对其求和
这只是对整列进行求和,但是使用它作为模板来处理当前页面上的行应该很简单,它只需要将原始代码与此混合。看看这个提琴-,我相信这就是您想要的。代码的关键部分是:
totalValues = api.column(2).nodes().toArray().map(function(node) {
return $(node).attr('data-value');
});
这将收集该列的jQuery节点,提取属性,然后对其求和
这只是对整列进行求和,但将其用作模板来处理当前页面上的行应该很简单,只需要将原始代码与此混合。要清楚,如果显示的值是“(45)”,数据值是“-45”还是“(45)”?Hi@colin0117是,值将是实际值。例如(45)或NEG或(45%)将有数据值=“-45”,任何正值,例如23或POS或23%将有数据值=“23”。要清楚,如果显示的值是“(45)”,数据值将是“-45”还是“(45)”?Hi@colin0117是,值将是实际值。例如(45)或负或(45%)的数据值为“-45”,任何正值如23或POS或23%的数据值为“-23”。