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

如何通过jQuery结合PHP返回的JSON数据实现表格中期初与期末余额的循环计算?

实现表格期初/期末余额的计算逻辑(基于jQuery)

当然可以实现!这个每日滚动计算余额的逻辑完全能用JavaScript + jQuery搞定,核心就是用一个变量来持续追踪前一天的期末余额,当作当天的期初余额就行。咱们一步步来改你的代码:

第一步:先修正原代码的语法问题

你原来的AJAX回调写法有个小语法错误——success函数应该放在AJAX的配置对象里,而不是外面。咱们先把这个小问题修掉。

第二步:加入余额计算逻辑

咱们需要维护一个变量来记录上一天的期末余额,初始值设为0(因为第一天的期初余额是0)。然后遍历每一条数据时,按规则计算当期的期末余额,同时把期初、期末余额填入表格,最后更新这个变量为当期期末余额,供下一行使用。

完整修正后的代码:

// 初始化上一期期末余额,第一天的期初就是0
let previousClosingBal = 0;

$.ajax({ 
    type: "POST", 
    cache: false,
    // 这里要补上你的请求URL哦,比如 url: "your-api-endpoint.php",
    success: function(response) { 
        // 注意:这里假设response是包含data数组的对象,比如 {data: [...]}
        // 如果你的后端返回的是直接的数组,那直接用response就行
        if (response && response.data) { 
            $.each(response.data, function(i, items) { 
                // 把入库、出库量转成数字,避免字符串拼接错误
                const inQty = parseInt(items.inqty) || 0;
                const outQty = parseInt(items.outqty) || 0;
                
                // 计算当期期末余额:期初 + 当日入库 - 当日出库
                const currentClosingBal = previousClosingBal + inQty - outQty;
                
                tableWithHeader.find('tbody').append(` 
                <tr> 
                <td>${previousClosingBal}</td> 
                <td>${inQty}</td> 
                <td>${outQty}</td> 
                <td>${currentClosingBal}</td> 
                </tr> 
                `); 
                
                // 更新上一期期末余额为当前的期末余额,供下一行使用
                previousClosingBal = currentClosingBal;
            }); 
        } 
    } 
});

关键逻辑说明:

  • 用previousClosingBal记录前一天的期末余额,初始值为0,对应第一天的期初余额。
  • 每遍历一条数据时,先把入库、出库量转成数字(避免字符串拼接出问题),再按公式计算当期期末余额:期初余额 + 当日入库量 - 当日出库量。
  • 把previousClosingBal(当期期初)和currentClosingBal(当期期末)填入对应的<td>中。
  • 最后更新previousClosingBal为当期的期末余额,这样下一行数据的期初余额就自动用上了前一天的期末值。

内容的提问来源于stack exchange,提问作者Satyam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 13:53:14