HTML中点击TABLE列头实现排序功能

来源:互联网 发布:js if判断多个条件 编辑:程序博客网 时间:2024/05/01 04:06
function sortCells(event) {
     var obj = event.target;
     var count = 0; count是记录点击次数的,根据奇偶进行升序或降序
 
     if(!obj.getAttribute("clickCount")){
         obj.setAttribute("clickCount", 0);
     } else {
         count = parseInt(obj.getAttribute("clickCount"));
         count++;
         obj.setAttribute("clickCount", count);
     }
     
     var table = event.target.parentNode.parentNode;
     if(table.nodeName.localeCompare("THEAD") == 0){
         if(table.parentNode.nodeName.localeCompare("TABLE") == 0){
             table = table.parentNode;
         } else {
             return;
         }
     } else if(table.nodeName.localeCompare("TBODY") == 0){
         if(table.parentNode.nodeName.localeCompare("TABLE") == 0){
             table = table.parentNode;
         } else {
             return;
         }
     } else if(table.nodeName.localeCompare("TABLE") == 0){
     } else {
         return;
     }
     
     var colNum;
     for(x = 0; x < table.rows(1).cells.length; x++){
         if(event.target.innerText.localeCompare(table.rows(0).cells[x].innerText) == 0){
             colNum = x;
             break;
         }
     }
     
     var column = table.rows(1).cells.length;
     var row = table.rows.length;
     var Ar = new Array(row - 1);
     for (x = 0; x < row - 1; x++) {
         Ar[x] = new Array(column);
     }
     for (x = 1; x < row; x++) {
         for (y = 0; y < column; y++) {
             Ar[x - 1][y] = table.rows(x).cells(y).innerHTML;
         }
     }
 
      //这个可以对字符串进行本地化排序
         /* if((count%2) == 0){
             Ar.sort(function(a, b) {
                 return b[colNum].localeCompare(a[colNum])
             });
         } else {
             Ar.sort(function(a, b) {
                 return a[colNum].localeCompare(b[colNum])
             });
         } */
 
     var temp;
     for (x = 0; x < row - 1; x++) {
         for (y = 1; y < row - 1; y++) {
             temp = Ar[y - 1];
             if((count % 2) == 0){
                 if (parseInt(Ar[y - 1][colNum]) >= parseInt(Ar[y][colNum])) {
                     Ar[y - 1] = Ar[y];
                     Ar[y] = temp;
                 }
             } else {
                 if (parseInt(Ar[y - 1][colNum]) <= parseInt(Ar[y][colNum])) {
                     Ar[y - 1] = Ar[y];
                     Ar[y] = temp;
                 }
             }
             
         }
     }
 
     for (x = 1; x < row; x++) {
         for (y = 0; y < column; y++) {
             table.rows(x).cells(y).innerHTML = Ar[x - 1][y];
         }
     }
     count++;
 }