javascript实现对表格元素进行排序操作

我们在上网中都能看到很多能够排序的,如大小、时间、价格等
现在我们也试一下排序功能:
排序的函数代码:里面含有点击之后排序--还原,和排升序和降序。

 function sortAge(){
      //对年龄进行排序,要先进行获得每一行对象,然后对象对象中的第一个(从0 开始)的大小进行排序
      var tabNode = document.getElementById("tabid");
      var rows0 = tabNode.rows;
      var rows1 = [];
      //现将元素拷贝一份出来, 第一行不用排序
      for (var x = 1; x < rows0.length; x++) {
        rows1[x - 1] = rows0[x];
      }
      for (var x = 0; x < rows1.length - 1; x++) {//每个元素是行对象
        for (var y = x + 1; y < rows1.length; y++) {
          //对每一行的内容进行解析成数字
          if (parseInt(rows1[x].cells[1].innerHTML) > parseInt(rows1[y].cells[1].innerHTML)) {
            //alert("aa="+x+":"+rows1[x].cells[1].innerHTML);
            //alert("bb"+rows1[y].cells[1].innerHTML);
            var temp = rows1[x];
            rows1[x] = rows1[y];
            rows1[y] = temp;
          }
        }
      } 

      /* 点击之后排序,排序之后恢复之前的状态 

if (flag){ 

      for (var x = 0; x < rows1.length; x++) {
        //       tabNode.childNodes[0].appendChild(rows[x]);//方法一: 不一定兼容
        rows1[x].parentNode.appendChild(rows1[x]);
      }
    }else{ 

      for (var x = 1; x < rows0.length; x++) {
        //       tabNode.childNodes[0].appendChild(rows[x]);//方法一: 不一定兼容
        rows0[x].parentNode.appendChild(rows0[x]);
      }
    }
    flag=!flag;*/
    /* 下面的是点之后出现正序和逆序显示 正序和逆序的区别就是appendchild的前后关系而已*/
    var ageimg=document.getElementById("ageid"); 

    if (flag) {
      for (var x = 0; x < rows1.length; x++) {//排好序之后就从0开始
        //       tabNode.childNodes[0].appendChild(rows[x]);//方法一: 不一定兼容
        rows1[x].parentNode.appendChild(rows1[x]);
      }
      ageimg.innerHTML="年龄▲";//设置上面的图标 

    }else{
      for (var x = rows1.length-1; x >=0; x--) {
        //       tabNode.childNodes[0].appendChild(rows[x]);//方法一: 不一定兼容
        rows1[x].parentNode.appendChild(rows1[x]);
      }
      ageimg.innerHTML="年龄▼"
    }
    flag=!flag;
      loading();//排序之后还要对颜色重新设置 

    }

设置表格的背景颜色代码,导入的css:

function loading(){
        var name;
        var tabNode=document.getElementById("tabid");
        var rows=tabNode.rows;//获得每一行的数组对象
        var rowslength=rows.length;//每一行的长度
        for(var x=1;x<rowslength;x++){//根据每一个去设置
          if(x%2==0){
            rows[x].className="one";
          }else{
            rows[x].className="two";
          }
          //当移动上去之后,之前的颜色要记录下来,不然移下来之后全部都是一个颜色了
          rows[x].onmouseover=function(){
            name=this.className;
            this.className="three";
          }
          rows[x].onmouseout=function(){
            this.className=name;
          }
        } 

      }
      onload=function(){
        loading();
      }

css代码:

table td a:hover{
      background-color:#0080c0;
    }
  .one{
    background-color:#80ff00;
  }
  .two{
    background-color:#ff8040;
  }
  .three{
    background-color:#008040;
  }
  table{
    width:500px;
    height:500px;
    border:#400040 solid 2px;
    border-collapse:collapse;
  }
  table td,th{
    border:solid 2px;
  }
  table th{
    background-color:#c0c0c0;
  }

效果图-----排序之前:

升序:

降序:

完整代码:

<!DOCTYPE html>
<html>
 <head>
  <title>sort.html</title>
  <style type="text/css">
    table td a:hover{
      background-color:#0080c0;
    }
    .one{
      background-color:#80ff00;
    }
    .two{
      background-color:#ff8040;
    }
    .three{
      background-color:#008040;
    }
    table{
      width:500px;
      height:500px;
      border:#400040 solid 2px;
      border-collapse:collapse;
    }
    table td,th{
      border:solid 2px;
    }
    table th{
      background-color:#c0c0c0;
    } 

  </style>
  <script type="text/javascript"> 

      function loading(){
        var name;
        var tabNode=document.getElementById("tabid");
        var rows=tabNode.rows;//获得每一行的数组对象
        var rowslength=rows.length;//每一行的长度
        for(var x=1;x<rowslength;x++){//根据每一个去设置
          if(x%2==0){
            rows[x].className="one";
          }else{
            rows[x].className="two";
          }
          //当移动上去之后,之前的颜色要记录下来,不然移下来之后全部都是一个颜色了
          rows[x].onmouseover=function(){
            name=this.className;
            this.className="three";
          }
          rows[x].onmouseout=function(){
            this.className=name;
          }
        } 

      }
      onload=function(){
        loading();
      }
    var flag=true;
    function sortAge(){
      //对年龄进行排序,要先进行获得每一行对象,然后对象对象中的第一个(从0 开始)的大小进行排序
      var tabNode = document.getElementById("tabid");
      var rows0 = tabNode.rows;
      var rows1 = [];
      //现将元素拷贝一份出来, 第一行不用排序
      for (var x = 1; x < rows0.length; x++) {
        rows1[x - 1] = rows0[x];
      }
      for (var x = 0; x < rows1.length - 1; x++) {//每个元素是行对象
        for (var y = x + 1; y < rows1.length; y++) {
          //对每一行的内容进行解析成数字
          if (parseInt(rows1[x].cells[1].innerHTML) > parseInt(rows1[y].cells[1].innerHTML)) {
            //alert("aa="+x+":"+rows1[x].cells[1].innerHTML);
            //alert("bb"+rows1[y].cells[1].innerHTML);
            var temp = rows1[x];
            rows1[x] = rows1[y];
            rows1[y] = temp;
          }
        }
      } 

      /* 点击之后排序,排序之后恢复之前的状态 

if (flag){ 

      for (var x = 0; x < rows1.length; x++) {
        //       tabNode.childNodes[0].appendChild(rows[x]);//方法一: 不一定兼容
        rows1[x].parentNode.appendChild(rows1[x]);
      }
    }else{ 

      for (var x = 1; x < rows0.length; x++) {
        //       tabNode.childNodes[0].appendChild(rows[x]);//方法一: 不一定兼容
        rows0[x].parentNode.appendChild(rows0[x]);
      }
    }
    flag=!flag;*/
    /* 下面的是点之后出现正序和逆序显示 正序和逆序的区别就是appendchild的前后关系而已*/
    var ageimg=document.getElementById("ageid"); 

    if (flag) {
      for (var x = 0; x < rows1.length; x++) {//排好序之后就从0开始
        //       tabNode.childNodes[0].appendChild(rows[x]);//方法一: 不一定兼容
        rows1[x].parentNode.appendChild(rows1[x]);
      }
      ageimg.innerHTML="年龄▲";//设置上面的图标 

    }else{
      for (var x = rows1.length-1; x >=0; x--) {
        //       tabNode.childNodes[0].appendChild(rows[x]);//方法一: 不一定兼容
        rows1[x].parentNode.appendChild(rows1[x]);
      }
      ageimg.innerHTML="年龄▼"
    }
    flag=!flag;
      loading();//排序之后还要对颜色重新设置 

    }
  </script> 

 </head> 

 <body>
  <table id="tabid">
    <tr><th>姓名</th>
      <th><a href="javascript:void(0)" onclick="sortAge()" id="ageid">年龄</a></th>
      <th>出生地</th>
    </tr>
    <tr>
      <td>张三</td>
      <td>13</td>
      <td>湖南长沙</td>
    </tr>
    <tr>
      <td>李四</td>
      <td>15</td>
      <td>湖南常德</td>
    </tr>
    <tr>
      <td>jack</td>
      <td>45</td>
      <td>湖南临澧</td>
    </tr>
    <tr>
      <td>王华</td>
      <td>23</td>
      <td>浙江杭州</td>
    </tr>
    <tr>
      <td>张进</td>
      <td>30</td>
      <td>安微合肥</td>
    </tr>
    <tr>
      <td>周全</td>
      <td>23</td>
      <td>湖南益阳</td>
    </tr>
    <tr>
      <td>杨哥</td>
      <td>42</td>
      <td>湖南常德</td>
    </tr> 

  </table>
 </body>
</html>

以上就是本文的全部内容,很详细,教大家如何对表格中的元素进行排序操作,感谢大家阅读这篇javascript实现对表格元素进行排序操作的文章,希望大家喜欢。

(0)

相关推荐

  • javascript实现表格增删改操作实例详解

    本文实例讲述了javascript实现表格增删改操作的方法.分享给大家供大家参考.具体实现方法如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"&

  • Javascript 表格操作实现代码

    中国北京 中国上海 var tabobj = document.getElementById("ch"); //获取 Table 对象 for( var i=0; i [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

  • javascript操作表格排序实例分析

    本文实例讲述了javascript操作表格排序的方法.分享给大家供大家参考.具体如下: 完整例子如下: <html> <head> <title>Table Sort Example</title> <script type="text/javascript"> //转换器,将列的字段类型转换为可以排序的类型:String,int,float function convert(sValue, sDataType) { swit

  • JScript实现表格的简单操作

    本文实例为大家分享了JScript实现表格的简单操作,供大家参考,具体内容如下 实现思路: 1.添加时:获取当前列表的行数,在当前一行添加下一行: 2.用insertCell()方法添加一行,下标从0开始, 3.若要给新一行添加类型.响应事件,就用setAttribute()方法,类似于键值对,并用appendChild()方法将数据保存到新一行 4.删除时:获取需要删除行的当前行数this,然后获取父节点,把整一行删掉remove(),而不是单单删除某一行的单个数据 5.修改时:获取当前修改行

  • JavaScript动态操作表格实例(添加,删除行,列及单元格)

    复制代码 代码如下: <html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>js动态操作表格</title><script language="javascript">function init(){_table=document.getElementByI

  • JavaScript表格常用操作方法汇总

    本文实例汇总了JavaScript表格常用操作方法.分享给大家供大家参考.具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <

  • javascript 表格内容排序 简单操作示例代码

    复制代码 代码如下: <div id="html"></div> <script> var listInfos = new Array(); listInfos[0] = new Array(); listInfos[0][0] = {'name':'推荐页1','DayCount':666,'AvgTime':29872,'ErrCount':180663,'ErrorRate':'2873%','DaySystemErrorCount':0,'D

  • 基于javascript实现表格的简单操作

    本文实例为大家分享了js表格操作的简单方法,供大家参考,具体内容如下 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>zzzz</title> <style> *{ margin: 0; padding: 0; } body{ width: 1000px; margin: 100px auto; font-family: &qu

  • javascript操作表格

    Power Table body{ FONT-SIZE: 9pt; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; } input { FONT-SIZE: 9pt; height: 15pt; width:50px; cursor: default; } table{ font-size: 9pt; word-break:break-all; cursor: default; BORDE

  • JavaScript DOM操作表格及样式

    一 操作表格 <table>标签是HTML中结构最为复杂的一个,我们可以通过DOM来创建生成它,或者HTMLDOM来操作它; // 使用DOM来创建表格; var table = document.createElement('table'); table.border = 1; table.width = 300; var caption = document.createElement('caption'); table.appendChild(caption); caption.appe

随机推荐