首页 > 解决方案 > 如何使用数据表或java脚本使用另一列的状态作为条件对列的值求和

问题描述

如何使用数据表或java脚本使用另一列的状态作为条件对一列的值求和

您好,感谢您的关注。我在这个世界上很新,我有一个困境。我正在使用 DATATABLE api 处理一个表,它有 12 列,其中有一个挂载调用和另一个事务结果调用。我的问题是,如果在交易结果列中它具有已批准状态,我需要添加挂载列的值。我设法使用我在此处找到的代码对所述列求和,但它完整地添加了列,并且在事务结果列的条件下不起作用。结果被扔在表的页脚中。现在,例如,如果我从 User id 列中获取数字并查找它,它们会被用户 id 过滤并自动更新总和,但它仍然不考虑状态是批准还是拒绝。

我真的很感谢你的关注,很抱歉仍然对这个主题一无所知,因为 js 还不是我的强项。

我留下了 2 张表格的图像来指示功能。以及您使用的代码片段。

链接在这里--> https://drive.google.com/file/d/1wrUYRczKvRU_CqDlAWrZZkCUaZwgggqB/view?usp=sharing

在此处输入图像描述

在此处输入图像描述

<script type="text/javascript">
    $(document).ready(function() {
        jQuery.fn.dataTable.Api.register('sum()', function() {
            return this.flatten().reduce(function(a, b) {
                if (typeof a === 'string') {
                  a = a.replace(/[^\d.-]/g, '') * 1;
                }

                if (typeof b === 'string') {
                    b = b.replace(/[^\d.-]/g, '') * 1;
                }

                return a + b;
            }, 0);
        });

        var table = $('#t_filtrada').DataTable({    
            "paging": false,   
            "ordering": false, 
            drawCallback: function() {
                var api = this.api();
                var numFormat = $.fn.dataTable.render.number('\,', '.', 2, '$').display; 

                $(api.column(2).footer()).html(
                    numFormat(api.column(2, {
                        page: 'current'
                    }).data().sum())
                );

                var total = api.column(2, {
                    "filter": "applied"
                }).data().sum();
                $('#monto').html(total);
            },
        });
    });
</script>

这只是一段代码。

标签: javascriptphphtmljquery

解决方案


这是您可以在填充表格并准备 sum() 之后运行的函数。它是 jQuery 而不是 DataTable 方法,但它应该可以工作

const sum = () => {
  let sum = 0;
  $('#t_filtrada tr').filter(function() {
    return $(this).find('td').eq(3).text().trim().toLowerCase() === 'approved';
  }).each(function() {
    sum += +$(this).find('td').eq(2).text().trim();
  })
  return sum
}

推荐阅读