码迷,mamicode.com
首页 > 编程语言 > 详细

使用JS实现表格排序

时间:2016-09-03 22:28:11      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:

功能:点击姓名、力量、智慧时,实现列排序。

技术分享

HTML:

技术分享
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
    #tb{
        border: 1px solid #ddd; 
    }
    #tb tbody td{
        border: 1px solid #ddd; 
    }
</style>
<meta charset="utf-8">
    <title></title>
</head>
<body>
<table id="tb">  
   <thead>
     <tr>
       <th>姓名</th>
       <th>力量</th>
       <th>智慧</th>
    </tr>
   </thead>
   <tbody>
       <tr>
    <td>安德烈</td>
    <td>2</td>
    <td>24</td>
    </tr>
    <tr>
    <td>德鲁伊</td>
    <td>5</td>
    <td>2</td>
    </tr>
    <tr>
    <td>浪客剑心</td>
    <td>1</td>
    <td>6</td>
    </tr>
    </tbody>
</table>
</body>
</html>
View Code

 

JS:

var table=document.getElementById("tb");
var table_th=document.getElementsByTagName("th");
var table_tbody=table.getElementsByTagName("tbody")[0];
var table_tr=table_tbody.getElementsByTagName("tr");
function bind_click(_i){
        table_th[_i].onclick=function(){
            var temp_arr=[];
            var temp_tr_arr=[];
            for(j=0;j<table_tr.length;j++){
                temp_arr.push(table_tr[j].getElementsByTagName("td")[_i].innerHTML);
                temp_tr_arr.push(table_tr[j].cloneNode(true));
            };
            var tr_length=table_tr.length
            for(x=0;x<tr_length;x++){
                table_tbody.removeChild(table_tbody.getElementsByTagName("tr")[0]);
            }
            var temp=parseInt(temp_arr[0])||temp_arr[0];
            if(typeof(temp)==‘number‘){
                temp_arr.sort(function(a,b){return a-b;});
            }else{
                temp_arr.sort();
            }
            for(k=0;k<temp_arr.length;k++){
                    for(vv=0;vv<temp_tr_arr.length;vv++){
                        if(temp_arr[k]==temp_tr_arr[vv].getElementsByTagName("td")[_i].innerHTML){
                            table_tbody.appendChild(temp_tr_arr[vv]);
                        }
                    }
            }
        }
    }
for(i=0;i<table_th.length;i++){
    bind_click(i);
}

 

实现思想很简单:

1.为每一个表头绑定一个click事件,传入序列号i;

2.click事件中,用临时数组temp_arr保存被点击的表头对应的列内容,temp_tr_arr保存临时tr数组;

3.删掉原来的tr;

4.对temp_arr中的数据排序;

5.根据排序结果append(tr);

 

temp_arr

使用JS实现表格排序

标签:

原文地址:http://www.cnblogs.com/hjy920124/p/5838087.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!