Javascript 访问Datatables中函数的表单元格属性

Javascript 访问Datatables中函数的表单元格属性,javascript,jquery,datatables,Javascript,Jquery,Datatables,我有下表。 如您所见,对于某些列,我必须在表尾显示Average/Total。我的代码适用于没有特殊格式的列,但是当有特殊格式时,比如我们必须为负值显示NEG,在这种情况下,计算的值是不正确的。所以我为所有单元格添加了数据值属性。现在我想访问footerCallback中函数的每个单元格的数据值属性 这是表中一个示例单元格的html代码 <td data-value="-3.78" class="red"> NEG </td> 负数 这是我的回调代码 "f

我有下表。

如您所见,对于某些列,我必须在表尾显示Average/Total。我的代码适用于没有特殊格式的列,但是当有特殊格式时,比如我们必须为负值显示NEG,在这种情况下,计算的值是不正确的。所以我为所有单元格添加了数据值属性。现在我想访问footerCallback中函数的每个单元格的数据值属性

这是表中一个示例单元格的html代码

<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”。