CodeIgniter中Datatables行求和异常,始终显示0.00求助
问题:CodeIgniter+Datatables全选行金额求和始终显示0.00
我在CodeIgniter框架下,用MySQL、PHP和Datatables搭建了数据表格,尝试实现选中行的金额求和功能,但点击全选复选框后,求和结果始终显示0.00。以下是相关代码及数据库信息:
求和相关代码片段(关键部分)
HTML部分
<th><input id="selectAll" type="checkbox" /></th> <td><input class="selected" type="checkbox" name="selected[]" value="<?= $value->payback_id ?>" /></td> <tfoot> <tr style="background-color: #cc99ff !important;"> <td colspan="<?= $type ? 5 : 6 ?>">Total</td> <td id="total_amount" class="text-right"></td> <td colspan="3"></td> </tr> </tfoot>
JavaScript部分
$('#selectAll').change(function(e) { if (e.target.checked) { $(".selected").prop("checked", true) $('.amount').map((key,ele) => { total += parseFloat(ele.value.replaceAll(",","")) }) showForm() } else { total = 0 $(".selected").prop("checked", false) hideForm() } $('#total_amount').text(numberWithCommas(total.toFixed(2))) })
MySQL表相关字段
id, imprest_salary_id, imprest_request_id, payment_type, amount, created_by, updated_by, created_at, updated_at
排查关键点
- 缺失.amount类元素:JS代码通过
$('.amount')获取金额值,但提供的HTML片段里没有任何带.amount类的标签(比如金额列的<td>或隐藏输入框),导致无法读取金额,求和自然为0。需在表格金额列对应的元素上添加class="amount",并确保该元素的value或文本内容为金额数值。 - total变量未初始化:全选分支中执行
total += ...前未重置total为0,若total存在残留值会引发计算错误。建议在全选逻辑开始时添加total = 0;(全局变量)或let total = 0;(局部变量)。 - replaceAll兼容性问题:部分旧版浏览器不支持
String.replaceAll(),会导致金额格式转换失败得到NaN,最终求和结果为0。可替换为正则表达式实现:ele.value.replace(/,/g, '')。 - Datatables服务器端加载影响:若使用服务器端分页,全选时只能获取当前页DOM元素。需确保金额元素已正确渲染到当前页面DOM中,或通过Datatables API获取所有选中行的数据来调整求和逻辑。
内容的提问来源于stack exchange,提问作者MCIT Trends
相关产品推荐
相关产品推荐

