JavaScript 点击表头,实现排序效果

<head>
    <meta charset="UTF-8">
    <title>哈哈哈哈</title>
</head>
<style>
table{
border-collapse:collapse;
width:90%;
}
tr{
border-bottom-style: solid;
border-bottom-width: 1px;
border-bottom-color: lightgray;
height:35px;
}
      
td{
width:25%;
text-align:center;
}
    
a{
  text-decoration: none;
  color:skyblue;
} 
    
</style>
<script>
var col = 0;
var reverse = false;
function sort(column){
 if(column == col)
     reverse = !reverse;
 col = column;
 var tbody = document.getElementById("tbody");
 //通过getElementsByTagName取出来是一个Collection
 var trsCollection =  document.getElementsByTagName("tr");
 //因为Collection没有自带的排序函数,所以需要转换为数组,利用数组自带的排序
 var trs =new Array();
 for (var i=1; i <trsCollection.length; i++) {
    trs.push(trsCollection[i]);
 }
 trs.sort(comparator);
 for (var i=0; i <trs.length; i++) {
  tbody.appendChild(trs[i]);
 }
}
function comparator(tr1,tr2){
   var td1 = tr1.children[col].innerHTML; //取某一行的第col列中的内容
   var td2 = tr2.children[col].innerHTML;
   if(reverse)
    return td1.localeCompare(td2);
   else
    return td2.localeCompare(td1);
}
</script>
<table>
   <tbody id="tbody">
   <tr >
       <td ><a  href="javascript:void(0)"  onclick="sort(0)">id</a></td>
       <td ><a  href="javascript:void(0)"  onclick="sort(1)">名称</a></td>
       <td ><a  href="javascript:void(0)"  onclick="sort(2)">血量</a></td>
       <td ><a  href="javascript:void(0)"  onclick="sort(3)">伤害</a></td>
    </tr>
   <tr >
       <td>1</td>
       <td>c</td>
       <td>340</td>
       <td>58</td>
    </tr>
   <tr >
       <td>2</td>
       <td>a</td>
       <td>320</td>
       <td>76</td>
    </tr>
   <tr >
       <td>3</td>
       <td>d</td>
       <td>380</td>
       <td>38</td>
    </tr>
   <tr >
       <td>4</td>
       <td>c</td>
       <td>400</td>
       <td>90</td>
    </tr>
    </tbody>
</table>



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在HTML表格中实现点击表头字段排序,可以使用JavaScript编写一个函数来执行排序操作。以下是一个简单的示例: HTML代码: ```html <table id="myTable"> <thead> <tr> <th onclick="sortTable(0)">Name</th> <th onclick="sortTable(1)">Age</th> <th onclick="sortTable(2)">Country</th> </tr> </thead> <tbody> <tr> <td>John</td> <td>21</td> <td>USA</td> </tr> <tr> <td>Mike</td> <td>32</td> <td>Canada</td> </tr> <tr> <td>Sarah</td> <td>25</td> <td>Australia</td> </tr> </tbody> </table> ``` JavaScript代码: ```javascript function sortTable(n) { var table, rows, switching, i, x, y, shouldSwitch, dir, switchcount = 0; table = document.getElementById("myTable"); switching = true; dir = "asc"; while (switching) { switching = false; rows = table.getElementsByTagName("tr"); for (i = 1; i < (rows.length - 1); i++) { shouldSwitch = false; x = rows[i].getElementsByTagName("td")[n]; y = rows[i + 1].getElementsByTagName("td")[n]; if (dir == "asc") { if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) { shouldSwitch = true; break; } } else if (dir == "desc") { if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) { shouldSwitch = true; break; } } } if (shouldSwitch) { rows[i].parentNode.insertBefore(rows[i + 1], rows[i]); switching = true; switchcount ++; } else { if (switchcount == 0 && dir == "asc") { dir = "desc"; switching = true; } } } } ``` 在这个示例中,我们使用一个带有三个表头字段的表格。每个表头字段都添加了一个`onclick`属性,该属性指定了一个JavaScript函数`sortTable()`,该函数将被调用以执行排序操作。 `sortTable()`函数接受一个参数`n`,该参数表示要按照哪个表头字段进行排序。该函数使用`getElementsByTagName()`方法获取表格中的所有行,并使用嵌套的循环遍历这些行。在每次循环中,函数比较两个行的单元格,如果它们需要交换,则使用`insertBefore()`方法交换它们的位置。函数还使用一个变量`dir`来跟踪排序顺序(升序或降序),并在每次循环中修改该变量以确保正确的排序顺序。 在这个示例中,我们将函数绑定到了表头的`onclick`事件上。这意味着当用户点击表头字段时,函数将被调用以执行排序操作。您可以根据需要修改此代码以满足您的特定需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值