最近在网上看到一段十分精简的实现表头固定的脚本,刚好项目中需要,于是利用Jquery进行重写和简单的封装,  基本可以在不改动现有表格的基础上实现表头固定,而且可以支持在同一个页面有多个table。

 

   1. <html>  
   2.   
   3. <head>  
   4.   
   5. <script src="jquery.js" type="text/javascript"></script>   
   6.   
   7.       
   8.   
   9. <style type="text/css">  
  10.   
  11. .tableDiv{  
  12.   
  13.     overflow-x:hidden;  
  14.   
  15.     BORDER-RIGHT:  1px solid;  
  16.   
  17.     BORDER-TOP:  1px solid;  
  18.   
  19.     BORDER-BOTTOM:  1px solid;  
  20.   
  21.     BORDER-LEFT:  1px solid;  
  22.   
  23. }  
  24.   
  25.   
  26.   
  27. .theadDiv{  
  28.   
  29.   position:relative;  
  30.   
  31.   white-space:nowrap  
  32.   
  33. }  
  34.   
  35.   
  36.   
  37. .contentDiv{  
  38.   
  39. overflow-x:scroll;  
  40.   
  41. overflow-y:scroll  
  42.   
  43. }  
  44.   
  45. .theadTd {  
  46.   
  47.         BORDER-RIGHT:  1px solid;  
  48.   
  49.         BORDER-TOP:  1px solid;  
  50.   
  51.         BORDER-BOTTOM:  1px solid;  
  52.   
  53.         BORDER-LEFT:  1px solid;  
  54.   
  55.         padding-top:5px;  
  56.   
  57.         padding-left: 4px;  
  58.   
  59.         padding-right: 4px;  
  60.   
  61.         HEIGHT: 25px;  
  62.   
  63.         overflow:hidden;  
  64.   
  65.         WHITE-SPACE: nowrap  
  66.   
  67. }  
  68.   
  69.   
  70.   
  71. </style>  
  72.   
  73. </head>  
  74.   
  75.   
  76.   
  77. <script type="text/javascript">  
  78.   
  79.       
  80.   
  81.       
  82.   
  83.     function setScrollGrid(tableID,twidth,theight){  
  84.   
  85.   
  86.   
  87.   
  88.   
  89.       var jqTable = $("#"+tableID);  
  90.   
  91.       var tableDivID = tableID+"_div";  
  92.   
  93.       var theadDivID = tableID+"_thead";  
  94.   
  95.       var contentDivID = tableID+"_content";  
  96.   
  97.         
  98.   
  99.       var tableDiv = document.createElement("DIV");  
 100.   
 101.       var theadDiv = document.createElement("DIV");  
 102.   
 103.       var contentDiv = document.createElement("DIV");  
 104.   
 105.         
 106.   
 107.       var jqTableDiv = $(tableDiv);  
 108.   
 109.       var jqTheadDiv = $(theadDiv);  
 110.   
 111.       var jqContentDiv = $(contentDiv);  
 112.   
 113.         
 114.   
 115.       jqTableDiv.addClass("tableDiv");  
 116.   
 117.       jqTheadDiv.addClass("theadDiv");  
 118.   
 119.       jqContentDiv.addClass("contentDiv");        
 120.   
 121.       jqContentDiv.get(0).onscroll = function(){ jqTheadDiv.get(0).style.posLeft=-jqContentDiv.get(0).scrollLeft;}   
 122.   
 123.         
 124.   
 125.       $(tableDiv).append(theadDiv);  
 126.   
 127.       $(tableDiv).append(contentDiv);  
 128.   
 129.   
 130.   
 131.       jqTable.before($(tableDiv));  
 132.   
 133.       $(contentDiv).append(jqTable);  
 134.   
 135.         
 136.   
 137.        jqTableDiv.width(twidth);  
 138.   
 139.        jqContentDiv.width(twidth);  
 140.   
 141.        jqContentDiv.height(theight);  
 142.   
 143.          
 144.   
 145.        var jqTheadTds = jqTable.find("thead > tr >td");  
 146.   
 147.          
 148.   
 149.        var newTitle = "";  
 150.   
 151.        for(var i=0;i < $(jqTheadTds).size();i++){  
 152.   
 153.              
 154.   
 155.            var tempTd = $(jqTheadTds).get(i);  
 156.   
 157.            newTitle += "<span class='theadTd' style='width:"+(tempTd.clientWidth+4)+"px'>"+tempTd.innerText+"</span>"  
 158.   
 159.         }  
 160.   
 161.          
 162.   
 163.        jqTheadDiv.html(newTitle);  
 164.   
 165.          
 166.   
 167.        jqTable.find("thead").remove();  
 168.   
 169.       
 170.   
 171.     }  
 172.   
 173.       
 174.   
 175.       
 176.   
 177.     function init(){  
 178.   
 179.       
 180.   
 181.     setScrollGrid("testTable",500,200);  
 182.   
 183.     }  
 184.   
 185.       
 186.   
 187.  </script>     
 188.   
 189.    
 190.   
 191.    
 192.   
 193.  <body onload="init();">  
 194.   
 195.      
 196.   
 197.        <table  id="testTable" >  
 198.   
 199.        <thead>  
 200.   
 201.         <tr>                 
 202.   
 203.             <td align="center" nowrap  width="100">标题1</td>  
 204.   
 205.             <td align="center" nowrap  width="100">标题2</td>  
 206.   
 207.             <td align="center" nowrap  width="100">标题3</td>                                                                                        
 208.   
 209.             <td align="center" nowrap  width="100">标题4</td>   
 210.   
 211.             <td align="center" nowrap  width="100">标题5</td>                                                                                        
 212.   
 213.             <td align="center" nowrap  width="100">标题6</td>               
 214.   
 215.        </tr>      
 216.   
 217.       </thead>  
 218.   
 219.        <tr>                 
 220.   
 221.             <td align="center" nowrap  width="100">date11</td>  
 222.   
 223.             <td align="center" nowrap  width="100">date12</td>  
 224.   
 225.             <td align="center" nowrap  width="100">date13</td>                                                                                        
 226.   
 227.             <td align="center" nowrap  width="100">date14</td>   
 228.   
 229.             <td align="center" nowrap  width="100">date15</td>                                                                                        
 230.   
 231.             <td align="center" nowrap  width="100">date16</td>               
 232.   
 233.        </tr>    
 234.   
 235.        <tr>                 
 236.   
 237.             <td align="center" nowrap  width="100">date21</td>  
 238.   
 239.             <td align="center" nowrap  width="100">date22</td>  
 240.   
 241.             <td align="center" nowrap  width="100">date23</td>                                                                                        
 242.   
 243.             <td align="center" nowrap  width="100">date24</td>   
 244.   
 245.             <td align="center" nowrap  width="100">date25</td>                                                                                        
 246.   
 247.             <td align="center" nowrap  width="100">date26</td>               
 248.   
 249.        </tr>    
 250.   
 251.        <tr>                 
 252.   
 253.             <td align="center" nowrap  width="100">date31</td>  
 254.   
 255.             <td align="center" nowrap  width="100">date32</td>  
 256.   
 257.             <td align="center" nowrap  width="100">date33</td>                                                                                        
 258.   
 259.             <td align="center" nowrap  width="100">date34</td>   
 260.   
 261.             <td align="center" nowrap  width="100">date35</td>                                                                                        
 262.   
 263.             <td align="center" nowrap  width="100">date36</td>               
 264.   
 265.        </tr>    
 266.   
 267.    
 268.   
 269.  </body>  
 
评论
发表评论

您还没有登录,请登录后发表评论

jokeymzx
搜索本博客
最近加入圈子
存档
最新评论