js+dom娱乐之table排序

有道笔试题,点击表头进行对成绩升序或降序
约定下表格标签结构 table>tr>th tr>td
比较懒就不封装了

假设HTML结构如下

    <table>
      <tr>
        <th>名字</th>
        <th>性别</th>
        <th>成绩</th>
      </tr>
      <tr>
        <td>a</td>
        <td>girl</td>
        <td>86</td>
      </tr>
      <tr>
        <td>b</td>
        <td>boy</td>
        <td>95</td>
      </tr>
    </table>
//1. 获取表格
var table = document.querySelector('table');
var trs = table.querySelectorAll('tr');
var direction = 1;//用来区分升序降序
//2.表格数据转为数组
var list = [];
for(var i = 1;i<trs.length;i++){
    var tds = trs[i].querySelectorAll('td');
    list.push({name:tds[0].innerText,sex:tds[1].innerText,score:tds[2].innerText})
}
//3.数组排序
(function(){
    for(var i =0; i< list.length;i++){
        for(var j=i;j<list.length;j++){
            if(list[i].score>list[j].score){
                var temp = list[i];
                list[i] = list[j]
                list[j] = temp;        
            }
        }
    }     
})()

//4.渲染页面,修改innerText,减少dom操作
function render(direction){
        if(direction == 1){
            for(var i=1;i<trs.length;i++){
                var tds = trs[i].querySelectorAll('td');
                tds[0].innerText = list[i-1].name;
                tds[1].innerText = list[i-1].sex;
                tds[2].innerText = list[i-1].score; 
          } 
        }else{
        for(var i=1;i<trs.length;i++){
                var tds = trs[i].querySelectorAll('td');
                tds[0].innerText = list[list.length-i].name;
                tds[1].innerText = list[list.length-i].sex;
                tds[2].innerText = list[list.length-i].score;   
          } 
        }
    }
//5.事件绑定
table.onclick=function(e){
    if(e.target.innerText=='成绩'){
        render(direction);direction= -direction;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值