首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按页面加载顺序对html表进行排序。

问按页面加载顺序对html表进行排序。
EN

Stack Overflow用户
提问于 2016-01-12 18:43:52
回答 2查看 6.4K关注 0票数 2

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

我试图使用下面的代码,但没有起作用:

代码语言:javascript
复制
    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); });

然后

代码语言:javascript
复制
<table id="myTable">
<tr>
<td>B</td>
<td>12/01/2016</td>
</tr>
<tr>
<td>A</td>
<td>12/01/2016</td>
</tr>
</table>

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

我在网上什么都找不到。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-12 18:52:19

您的问题是,这一行没有返回trs:

代码语言:javascript
复制
var listitems = mylist.children('tr').get();

修改到下面,一切都会正常工作。

代码语言:javascript
复制
var listitems = mylist.find('tr');

​

代码语言:javascript
复制
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); });
代码语言:javascript
复制
<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>

​

票数 5
EN

Stack Overflow用户

发布于 2016-01-12 19:04:09

这是我使用的一个片段。注意:这比使用jquery ()更快

​

代码语言:javascript
复制
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();
代码语言:javascript
复制
<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>

​

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34751453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档