如何通过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
相关产品推荐
相关产品推荐

