【问题标题】:Sort html table alphabetically on page load在页面加载时按字母顺序对 html 表格进行排序
【发布时间】:2016-01-12 18:43:52
【问题描述】:

我希望在页面加载时按字母顺序对 html 表格进行排序,就像对无序列表进行排序一样。

我尝试使用下面的代码但没有成功:

    var mylist = $('#myTable');
var listitems = mylist.children('tr').get();
listitems.sort(function(a, b) {
   return $(a).text().toUpperCase().localeCompare($(b).text().toUpperCase());
})
$.each(listitems, function(idx, itm) { mylist.append(itm); });

然后

<table id="myTable">
<tr>
<td>B</td>
<td>12/01/2016</td>
</tr>
<tr>
<td>A</td>
<td>12/01/2016</td>
</tr>
</table>

我希望它按行中第一列的字母顺序对表格进行排序。

我在网上找不到任何关于此的内容。

【问题讨论】:

    标签: javascript jquery html sorting


    【解决方案1】:

    你的问题是这条线没有返回你的 trs:

    var listitems = mylist.children('tr').get();
    

    修改如下,一切正常。

    var listitems = mylist.find('tr');
    

    var mylist = $('#myTable');
    var listitems = mylist.find('tr');
    listitems.sort(function(a, b) {
       return $(a).text().toUpperCase().localeCompare($(b).text().toUpperCase());
    })
    $.each(listitems, function(idx, itm) { mylist.append(itm); });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <table id="myTable">
    <tr>
    <td>B</td>
    <td>12/01/2016</td>
    </tr>
    <tr>
    <td>A</td>
    <td>12/01/2016</td>
    </tr>
    </table>

    【讨论】:

    • 你没有将 jquery 注入你的 jsfiddle
    • @ShaneBuckley 你应该在外部资源中输入 jquery url。
    【解决方案2】:

    这是我使用的一个 sn-p。注意:这比使用 jquery find() 更快

    function sortTable(){
        var table = document.getElementById("myTable");
        var Arr = [];
        for(var i=0, ln=table.rows.length; i<ln; i++){
            var row = table.rows[i];
            var firstCell = row.cells[0].textContent;
         Arr.push([firstCell, row]);  //temporary array
        }
    //sort by first column of inner arrays
        Arr = Arr.sort(function(a,b) {
      return a[0] > b[0];
    });
        for(var i=0, ln=Arr.length; i<ln; i++){
            table.appendChild(Arr[i][1]);
        }
        Arr = null;
    }
    sortTable();
    <table id="myTable">
    <tr>
    <td>d</td>
    <td>12/03/2016</td>
    </tr>
    <tr>
    <td>B</td>
    <td>12/01/2016</td>
    </tr>
    <tr>
    <td>A</td>
    <td>12/04/2016</td>
    </tr>
    <tr>
    <td>C</td>
    <td>12/04/2016</td>
    </tr>
    </table>

    【讨论】:

    • 这样更好,但我不想排序..这是对整个表进行排序...请帮助...
    • @AbijithAjayan 你能解释清楚一点吗?我没有理解您对整个表格进行排序的意思,也不想对 . 进行排序
    • 实际上在我的表中.. 里面有一个 标签四个 标签...像这样的很多 标签... 和第三个 是名称,第二个 和第四个 是地点......基于人的出生地......我想按人名排序......基于人名place 也会排序.. 我试过了.. 但是,在排序时.. 它考虑了 First 并基于这个第一个 temaining 每个 正在排序.. 这就是问题.. 我想要主排序第一个 和第三个 中的函数
    • @tkay我想要这样,基于第一个第二个 必须排序,基于第三个 第四个 必须排序......实际上我得到了, 因为只有 first evry 才会有这个孩子。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签