You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 04:20:29