Javascript 数据表中的乘法

Javascript 数据表中的乘法,javascript,jquery,datatables,Javascript,Jquery,Datatables,下面是我的代码 $(文档).ready(函数(){ 函数getCodeNameSpecsSize(数据、类型、数据集){ 返回数据[3]+“,“+数据[4]+”,“+数据[5]+”,“+数据[6]; } 函数getTotalPrice(数据、类型、dataToSet){ 返回数据[7]*数据[9]; } 变量表=$(“#来料”)数据表({ “处理”:正确, “服务器端”:没错, “卷轴”:350, “scrollX”:正确, “延迟渲染”:正确, “ajax”:“脚本/服务器响应im.php”

下面是我的代码

$(文档).ready(函数(){
函数getCodeNameSpecsSize(数据、类型、数据集){
返回数据[3]+“,“+数据[4]+”,“+数据[5]+”,“+数据[6];
}
函数getTotalPrice(数据、类型、dataToSet){
返回数据[7]*数据[9];
}
变量表=$(“#来料”)数据表({
“处理”:正确,
“服务器端”:没错,
“卷轴”:350,
“scrollX”:正确,
“延迟渲染”:正确,
“ajax”:“脚本/服务器响应im.php”,
“aoColumns”:[
{“data”:“1”,“sClass”:“align_center”},
{“data”:“2”,“sClass”:“align_center”},
{“data”:getCodeNameSpecsSize,“sClass”:“align_center”},
{“data”:“7”,“sClass”:“align_center”},
{“data”:“8”,“sClass”:“align_center”},
{“data”:“9”,“sClass”:“align_center”},
{“数据”:“10”,“sClass”:“对齐中心”,
“fnCreatedCell”:功能(nTd、sData、oData、iRow、iCol){
变量$currencyCell=$(新台币);
var commaValue=$currencyCell.text()。替换(/(\d)(?=(\d\d\d)+(?!\d))/g,“$1”);
$currencyCell.text(commaValue);
}
},
{“data”:getTotalPrice,“sClass”:“align_center”,
“fnCreatedCell”:功能(nTd、sData、oData、iRow、iCol){
变量$currencyCell=$(新台币);
var commaValue=$currencyCell.text()。替换(/(\d)(?=(\d\d\d)+(?!\d))/g,“$1”);
$currencyCell.text(commaValue);
}
},
{“data”:“11”,“sClass”:“align_center”},
{“mData”:null,“sClass”:“对齐中心”,
“mRender”:功能(数据、类型、完整){
返回“”;}
}
],
“aaSorting”:[[0,'desc']],
dom:'Bfrtip',
长度菜单:[
[ 10, 25, 50, -1 ],
[“10行”、“25行”、“50行”、“全部显示”]
],
按钮:[
“页面长度”,
“打印”,
“复制HTML5”,
“卓越HTML5”,
“csvHtml5”,
“pdfHtml5”,
“科尔维斯”
],
});
});

您可能需要检查数据[7]和数据[9]的类型。如果它们是字符串类型,则乘法可能不起作用


尝试使用parseInt(数据[7])*parseInt(数据[9]),看看是否有效

您试图将函数传递给
数据:
,但这不是它所期望的。该选项应指向数据中的字段。如果希望该列显示由函数计算的数据,这就是
render:
的作用

注意,您将1.10之前的符号与1.10之后的符号混合在一起;例如,您正在使用
mRender
,而您应该只使用
render
。所有的can和应替换为新符号

不管上面的注释如何,下面是如何获得一个列来呈现将
data[7]
data[8]
传递到
getTotalPrice
函数后得到的数据

{"data": null, "sClass": "align_center",
    "fnCreatedCell": function (nTd, sData, oData, iRow, iCol) {
    var $currencyCell = $(nTd);
    var commaValue = $currencyCell.text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
    $currencyCell.text(commaValue);
    },
    "render": function ( data, type, row, meta ) {
        return getTotalPrice(row);
    }
}
请注意,
数据:
已替换为null。这是因为数据不在原始源中,而是从其他字段计算的。 另一个主要更改是添加了
render
选项


我不确定
fnCreatedCell
应该做什么,但如果这不起作用,请尝试注释出来,因为它可能会或可能不会干扰
渲染

我的代码现在正在工作。我的错。在我重新检查了所有内容之后,我得到了单价=数据[10];不是数据[9];因此,这是使结果不可用或NaN。谢谢大家的支持。

数量和单价在我的表中已经很大了,我也试过你的代码返回parseInt(数据[7])*parseInt(数据[9]);它不起作用了。有什么想法吗?谢谢。没有任何示例输入数据很难调试。尝试在函数或控制台日志中添加断点,以查看发生了什么。同时暂时注释掉fnCreatedCell函数,并尝试隔离该问题。我的代码正在运行。我的错。在我重新检查了所有内容之后,我得到了单价=数据[10];不是数据[9];因此,这是使结果不可用或NaN。谢谢你的支持。我的代码正在运行。我的错。在我重新检查了所有内容之后,我得到了单价=数据[10];不是数据[9];因此,这是使结果不可用或NaN。感谢您的支持。顺便说一句,fncreatedCell函数是将行变成货币格式(向行中添加comas),我在哪里得到lol。