javascript - 使用逗号和数据表小数

标签 javascript html datatable datatables

以哪种方式添加逗号来分隔千位,现在他们给我的结果是 400000 ,但所需的结果是 400,000 。换句话说,我需要这些组的结果有一个逗号,以便它们可以以千为单位分隔

 $(document).ready(function () {
        var table = $('#example').DataTable({



            "footerCallback": function (row, data, start, end, display) {
                var api = this.api(), data;

                // Remove the formatting to get integer data for summation
                var intVal = function (i) {
                    return typeof i === 'string' ?
                        i.replace(/[\L,]/g, '') * 1 :
                        typeof i === 'number' ?
                        i : 0;
                };

                // Total over all pages
                total = api
                    .column(5)
                    .data()
                    .reduce(function (a, b) {
                        return intVal(a) + intVal(b);
                    }, 0);

                // Total over this page
                pageTotal = api
                    .column(5, { page: 'current' })
                    .data()
                    .reduce(function (a, b) {
                        return intVal(a) + intVal(b);
                    }, 0);

                // Update footer
                $(api.column(5).footer()).html(
                   // '' + pageTotal + ' ( L' + total + ' total)'
                   '' + total.toFixed(2)
                );
            },

            "columnDefs": [
                { "visible": false, "targets": 2 }
            ],
            "order": [[2, 'asc']],
            "displayLength": 25,
            "drawCallback": function (settings) {
                var api = this.api();
                var rows = api.rows({ page: 'all' }).nodes();
                var last = null;

                // Remove the formatting to get integer data for summation
                var intVal = function (i) {
                    return typeof i === 'string' ?
                          i.replace(/[\$,]/g, '') * 1 :
                          typeof i === 'number' ?
                        i : 0;
                };

                total = [];
                api.column(2, { page: 'all' }).data().each(function (group, i) {
                    group_assoc = group.replace(' ', "_");
                    console.log(group_assoc);
                    if (typeof total[group_assoc] != 'undefined') {
                        total[group_assoc] = total[group_assoc] + intVal(api.column(5).data()[i]);
                    } else {
                        total[group_assoc] = intVal(api.column(5).data()[i]);
                    }
                    if (last !== group) {
                        $(rows).eq(i).before(
                            '<tr class="group"><td colspan="4">' + group + '</td><td class="' + group_assoc + '"></td></tr>'
                        );

                        last = group;
                    }
                });
                for (var key in total) {
                    $("." + key).html("$" + total[key].toFixed(2));
                }
            }
        });


    });


<link href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css" rel="stylesheet" />
<link href="https://cdn.datatables.net/rowgroup/1.0.4/css/rowGroup.dataTables.min.css" rel="stylesheet" />
<script src="//code.jquery.com/jquery-1.12.3.min.js"></script>
<script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/rowgroup/1.0.4/js/dataTables.rowGroup.min.js"></script>


<div class="container">
    <div class="row">
        <div class="col-xs-12">

            <table id="example" class="table table-bordered table-hover dt-responsive display" cellspacing="0" width="100%">
                <thead>
                    <tr>
                        <th>Name</th>
                        <th>Position</th>
                        <th>Office</th>
                        <th>Age</th>
                        <th>Start date</th>
                        <th>Salary</th>
                    </tr>
                </thead>
                <tfoot>
                    <tr>
                        <th>Name</th>
                        <th>Position</th>
                        <th>Office</th>
                        <th>Age</th>
                        <th>Start date</th>
                        <th>Total:</th>
                    </tr>
                </tfoot>
                <tbody>

                    <tr>
                        <td>Garrett Winters</td>
                        <td>Accountant</td>
                        <td>Tokyo</td>
                        <td>63</td>
                        <td>2011/07/25</td>
                        <td>$170,750</td>
                    </tr>


                    <tr>
                        <td>Airi Satou</td>
                        <td>Accountant</td>
                        <td>Tokyo</td>
                        <td>33</td>
                        <td>2008/11/28</td>
                        <td>$162,700</td>
                    </tr>
                    <tr>
                        <td>Brielle Williamson</td>
                        <td>Integration Specialist</td>
                        <td>New York</td>
                        <td>61</td>
                        <td>2012/12/02</td>
                        <td>$372,000</td>
                    </tr>
                    <tr>
                        <td>Herrod Chandler</td>
                        <td>Sales Assistant</td>
                        <td>San Francisco</td>
                        <td>59</td>
                        <td>2012/08/06</td>
                        <td>$137,500</td>
                    </tr>


                    <tr>
                        <td>Sonya Frost</td>
                        <td>Software Engineer</td>
                        <td>Edinburgh</td>
                        <td>23</td>
                        <td>2008/12/13</td>
                        <td>$100,000</td>
                    </tr>

                    <tr>
                        <td>Quinn Flynn</td>
                        <td>Support Lead</td>
                        <td>Edinburgh</td>
                        <td>22</td>
                        <td>2013/03/03</td>
                        <td>$300,000</td>
                    </tr>





                    <tr>
                        <td>Doris Wilder</td>
                        <td>Sales Assistant</td>
                        <td>Sidney</td>
                        <td>23</td>
                        <td>2010/09/20</td>
                        <td>$85,600</td>
                    </tr>


                    <tr>
                        <td>Jennifer Chang</td>
                        <td>Regional Director</td>
                        <td>Singapore</td>
                        <td>28</td>
                        <td>2010/11/14</td>
                        <td>$357,650</td>
                    </tr>



                    <tr>
                        <td>Michelle House</td>
                        <td>Integration Specialist</td>
                        <td>Sidney</td>
                        <td>37</td>
                        <td>2011/06/02</td>
                        <td>$95,400</td>
                    </tr>


                    <tr>
                        <td>Timothy Mooney</td>
                        <td>Office Manager</td>
                        <td>London</td>
                        <td>37</td>
                        <td>2008/12/11</td>
                        <td>$136,200</td>
                    </tr>

                    <tr>
                        <td>Olivia Liang</td>
                        <td>Support Engineer</td>
                        <td>Singapore</td>
                        <td>64</td>
                        <td>2011/02/03</td>
                        <td>$234,500</td>
                    </tr>
                    <tr>
                        <td>Bruno Nash</td>
                        <td>Software Engineer</td>
                        <td>London</td>
                        <td>38</td>
                        <td>2011/05/03</td>
                        <td>$163,500</td>
                    </tr>


                    <tr>
                        <td>Finn Camacho</td>
                        <td>Support Engineer</td>
                        <td>San Francisco</td>
                        <td>47</td>
                        <td>2009/07/07</td>
                        <td>$87,500</td>
                    </tr>

                    <tr>
                        <td>Donna Snider</td>
                        <td>Customer Support</td>
                        <td>New York</td>
                        <td>27</td>
                        <td>2011/01/25</td>
                        <td>$112,000</td>
                    </tr>
                </tbody>
            </table>
        </div>
    </div>
</div>

这是我当前的结果 enter image description here

我想要这样的东西 enter link description here

最佳答案

您需要指定Renderer以自定义格式显示列值。

您可以使用intl plugin具有已知的语言环境。如果您的目标是支持美国(按照您描述的方式使用逗号),您可以这样做:

"columnDefs": [ { 
    "visible": false, 
    "targets": 2, 
    "render": $.fn.dataTable.render.intlNumber('us') 
}]

关于javascript - 使用逗号和数据表小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53875512/

相关文章:

javascript - iPhone : Fast Forward & Rewind using HTML5 <audio> & playbackRate doesn't work?

javascript - 如何设置 ionic2 的选定 ng

javascript - 更改小数点

html - 背景样式在带有 ionic 滑动框的 ng-repeat 中不起作用

html - 如果我使用#!而不是 anchor 标记 <a> 的 href 中的#?

powershell - PowerShell维护PSObject中DataTable的顺序

javascript - 如何在数据表的单元格内添加一个按钮以在弹出窗口中显示详细信息?

user-interface - 从 Richfaces 表中选择项目的最简洁方法?选择列表?

javascript - 带分页的同位素布局?或者至少是增量加载?

javascript - 如何将 PWA 重定向到新服务器