简体   繁体   English

通过 Javascript 对 HTML 表格进行排序

[英]Sort HTML table by Javascript

I have the following HTML table which I wanted to be sorted by data-sku=""我有以下 HTML 表格,我想按data-sku=""对其进行排序

 ( function() { $("table tbody tr").sort(sort_table).appendTo('table tbody'); function sort_table(a, b) { return ($(b).data('sku')) < ($(a).data('sku')) ? 1 : -1; } } )();
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <table> <tbody> <tr class="abp-product-42" data-id="42" data-sku="A-04-0002"><td>A-04-0002</tr> <tr class="abp-product-21" data-id="21" data-sku="A-04-0011"><td>A-04-0011</td></tr> <tr class="abp-product-391" data-id="391" data-sku="A-02-0008"><td>A-02-0008</td></tr> <tr class="abp-product-393" data-id="393" data-sku="A-02-0007"><td>A-02-0007</td></tr> <tr class="abp-product-40" data-id="40" data-sku="A-04-0010"><td>A-03-0010</td></tr> <tr class="abp-product-390" data-id="390" data-sku="A-03-0003"><td>A-04-0003</td></tr> </tbody> </table>

But somehow it doesn't work - what I'm doing wrong or what I'm missing?但不知何故它不起作用 - 我做错了什么或我错过了什么?

Your code is working fine.您的代码运行良好。
Just, The last 2 rows attribute data-sku are not match with it's cell content.只是,最后 2 行属性data-sku与其单元格内容不匹配。

<tr class="abp-product-40" data-id="40" data-sku="A-04-0010">
    <td>A-03-0010</td>
</tr>
<tr class="abp-product-390" data-id="390" data-sku="A-03-0003">
    <td>A-04-0003</td>
</tr>

 (function () { function sort_table(a, b) { return ($(b).attr('data-sku')) < ($(a).attr('data-sku')) ? 1 : -1; } $("table tbody tr").sort(sort_table).appendTo('table tbody'); })();
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <table> <tbody> <tr class="abp-product-42" data-id="42" data-sku="A-04-0002"> <td>A-04-0002 </tr> <tr class="abp-product-21" data-id="21" data-sku="A-04-0011"> <td>A-04-0011</td> </tr> <tr class="abp-product-391" data-id="391" data-sku="A-02-0008"> <td>A-02-0008</td> </tr> <tr class="abp-product-393" data-id="393" data-sku="A-02-0007"> <td>A-02-0007</td> </tr> <tr class="abp-product-40" data-id="40" data-sku="A-03-0010"> <td>A-03-0010</td> </tr> <tr class="abp-product-390" data-id="390" data-sku="A-04-0003"> <td>A-04-0003</td> </tr> </tbody> </table>

This will call your function in every 5 seconds like I mentioned in the comment.就像我在评论中提到的那样,这将每 5 秒调用一次您的函数。

 window.setInterval(function(){ sortData(); }, 5000); function sortData(){ $("table tbody tr").sort(sort_table).appendTo('table tbody'); function sort_table(a, b) { return ($(b).data('sku')) < ($(a).data('sku')) ? 1 : -1; } }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <table> <tbody> <tr class="abp-product-42" data-id="42" data-sku="A-04-0002"><td>A-04-0002</tr> <tr class="abp-product-21" data-id="21" data-sku="A-04-0011"><td>A-04-0011</td></tr> <tr class="abp-product-391" data-id="391" data-sku="A-02-0008"><td>A-02-0008</td></tr> <tr class="abp-product-393" data-id="393" data-sku="A-02-0007"><td>A-02-0007</td></tr> <tr class="abp-product-40" data-id="40" data-sku="A-04-0010"><td>A-04-0010</td></tr> <tr class="abp-product-390" data-id="390" data-sku="A-03-0003"><td>A-03-0003</td></tr> <tr class="abp-product-390" data-id="390" data-sku="A-05-0003"><td>A-05-0003</td></tr> </tbody> </table>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM