javascript实现表格中,行的排序和汇总

 项目业务上的需要,显示数据条目的过程中,要进行数据的汇总。根据这个要求,用了几个javascript行数。在网页加载后,调用,实现了数据的求和和排序

<html>
 <head>
  <script>
  function compare_string(str1,str2){
   return str1.localeCompare(str2);
  }
  
  function compare_num(num1,num2){
   var int1 = parseInt(num1);
   var int2 = parseInt(num2);
   if(int1 > int2){
    return 1;
   }else if(int1 < int2){
    return -1;
   }else{
    return 0;
   }
  } 
  function compare_rows(oTr1,oTr2){
   var rowData1 = oTr1.cells[0].firstChild.nodeValue;
   var rowData2 = oTr2.cells[0].firstChild.nodeValue;
   return rowData1.localeCompare(rowData2);
  }
  function compareRow(col){
   return function compare_rows(oTr1,oTr2){
    var rowData1 = oTr1.cells[col].firstChild.nodeValue;
    var rowData2 = oTr2.cells[col].firstChild.nodeValue;
    return rowData1.localeCompare(rowData2);
   };
   
  }
  function table_sum(j){
   var oTable = document.getElementById("tid1");
   
   var oTbody = oTable.tBodies[0];
   var colDataRows = oTbody.rows;
   var v=0;
   for(var i=1; i<colDataRows.length; i++){
    v += parseInt(colDataRows[i].cells[j].firstChild.nodeValue);
   }
   colDataRows[0].cells[j].firstChild.nodeValue=v;
  }
  
  function sort_table(stid,sortid,col){
   var oTable = document.getElementById("tid1");
   
   var oTbody = oTable.tBodies[0];
   var colDataRows = oTbody.rows;
   var atrrs = new Array;
   var fcompareRow = compareRow(col);
   for(var i=0; i<colDataRows.length; i++){
    atrrs.push(colDataRows[i]);
   }
   if(oTable.sortId == sortid){
    atrrs.reverse();
   }else{
    atrrs.sort(fcompareRow);
   }   
   var oFragment = document.createDocumentFragment();
   for(var i=0; i<atrrs.length; i++){
    oFragment.appendChild(atrrs[i]);
   }
   oTbody.appendChild(oFragment);
   oTable.sortId = sortid;
  }
  </script>
 </head>
 <body οnlοad="table_sum(1);">
 <table id="tid1">
  <thead>
   <tr>
    <th style="cursor:pointer">名称</th>
    <th style="cursor:pointer">人数1</th>
    <th style="cursor:pointer">人数2</th>
    <th style="cursor:pointer">人数3</th>
   </tr>
  </thead>
   <tr>
    <td>总数</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>     
   </tr>
   <tr>
    <td>A</td>
    <td>10</td>
    <td>26</td>
    <td>8</td>     
   </tr>
   <tr>
    <td>B</td>
    <td>15</td>
    <td>28</td>
    <td>9</td>     
   </tr>
   
   <tr>
    <td>C</td>
    <td>5</td>
    <td>22</td>
    <td>20</td>     
   </tr>
   
   <tr>
    <td>D</td>
    <td>0</td>
    <td>22</td>
    <td>10</td>     
   </tr>
   
  <tbody>
   
  </tbody>
 </table>
 </body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值