【问题标题】:jQuery calculation in table td loop表 td 循环中的 jQuery 计算
【发布时间】:2021-07-13 20:22:24
【问题描述】:

我正在通过 PHP 获取 JSON 数据。我正在尝试在 javascript 和 jQuery 的帮助下计算 td 的值,并计算如下表示例的期初余额和期末余额。

这可能吗? 请帮助我如何在我的 jQuery 代码中使用 jquery 实现。

示例表 -

open bal as 0 first time + today in - today out = closing balprevious closing bal 将是 open bal next day

open bal today in today out closing bal
1 1 1 1
2 0 1 1
0 2 0 2

$.ajax({
    type: "POST",
    cache: false,
  },
  success: function(response) {
    if (response == "ok") {
      $.each(response.data, function(i, items) {
        tableWithHeader.find('tbody').append(`
     <tr>
      <td>0</td>
      <td>${items.inqty}</td>
      <td>${items.outqty}</td>
      <td></td>
      </tr>
    `);
      });
    }
  });

【问题讨论】:

  • 根据您的描述,我不知道您当前拥有哪个表和哪些数据作为结果,以及您想要哪些数据和表作为结果。你展示了填充表格并说:"displaying that data as given below jQuery code in the loop" AND I am trying to calculate as given below table example" 那么我们应该对此做些什么呢?您如何附加响应中的示例数据?另外,如果您不知道内部循环,为什么在填充后不直接在前端计算?
  • 我更新了问题。请检查是否正确?我正在尝试将 td 值计算为我的 ajax 响应中的打开和关闭
  • 我要求提供样本数据...现在items.closeqtyitems.openqty 里面是什么?你说你想计算这些列,但你用 json 数据中的变量填充它们?
  • 对不起,我明白你在说什么...问题已更新。请帮助

标签: javascript html jquery ajax html-table


【解决方案1】:

这里:

$.ajax({
    type: "POST",
    cache: false,
  },
  success: function(response) {
    if (response == "ok") {
      let openqty = 0 // declare outside of loop
      let closeqty = 0 // declare outside of loop
      $.each(response.data, function(i, items) {
      
      closeqty = parseInt(items.inqty) - parseInt(items.outqty) + openqty
      //calculate closeqty
        tableWithHeader.find('tbody').append(`
     <tr>
      <td>${openqty}</td>  // this will be 0 on first run
      <td>${items.inqty}</td>
      <td>${items.outqty}</td>
      <td>${closeqty}</td>
      </tr>
    `);
      });
      openqty = closeqty // now set it for next loop to be same as closeqty 
    }
  });

工作示例:

//$.ajax({
//type: "POST",
//cache: false,
//},
//success: function(response) {
//if (response == "ok") {
let openqty = 0 // declare outside of loop
let closeqty = 0 // declare outside of loop

const response = {
  data: [{
    inqty: "2",
    outqty: "0"
  }, {
    inqty: "0",
    outqty: "1"
  }, {
    inqty: "1",
    outqty: "1"
  }]
} // sample data

$.each(response.data, function(i, items) {

  closeqty = parseInt(items.inqty) - parseInt(items.outqty) + openqty
  //calculate closeqty

  $("table").find('tbody').append(`
     <tr>
      <td>${openqty}</td>  // this will be 0 on first run
      <td>${items.inqty}</td>
      <td>${items.outqty}</td>
      <td>${closeqty}</td>
      </tr>
    `);
  openqty = closeqty // now set it for next loop to be same as closeqty

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
  <tbody>
  </tbody>
</table>

【讨论】:

  • 非常感谢
  • 如果任何数字为负数,这可行吗?
  • @Satyam 我相信是的,它是正常的负加数学,但只有当数字是整数时它才能正常工作,因此 parseInt() 函数。如果您有十进制值,则需要更改代码。
  • @Satyam 另外请注意样本数据和工作 sn-p。如果您准备这样的问题,您将有更多机会获得帮助。看看minimal reproducible example 是什么意思。欢迎来到 SO,祝你好运。
  • 我在获取 JSON 数据 ORDER BY ASC 时遇到问题,但是当我使用 DESC ORDER 时,输出出现错误。请麻我如何解决这个问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-08
  • 2019-02-23
  • 2021-09-09
相关资源
最近更新 更多