分享

js前端实现分页

 一只小菜鸟丿 2017-10-31

  主要是借鉴了网上一个例子,自己重新加了样式,添加了跳转,修改了一些小地方,用于和大家一起分享,前端分页的技巧,表格的数据是我已经写好了,其实大家也可以前端渲染表格然后再分页,都是可以的。


其实分页最关键是这两句:

var startRow = (currentPage - 1) * pageSize+1;  //currentPage 为当前页,pageSize为每页显示的数据量
var endRow = currentPage * pageSize;


找到我们需要显示的行的范围(starRow~endRow)


ps:这里在跳转的时候遇到了一个小BUG,就是获取到的select的value值是string类型的,比如获取到了1,然后你想再加1的时候就会变成"11" 而不是我们想要的"2"所以这里需要用parseInt( )来转换一下,小细节需要注意呀!!!


效果图:



[javascript] view plain copy
  1. <!doctype html>  
  2. <html>  
  3. <head>  
  4.  <meta charset='utf-8'>  
  5.  <style type="text/css">  
  6.     
  7.      a{  
  8.         text-decoration: none;  
  9.     }  
  10.       
  11.     .table2{  
  12.         border:#C8C8C8 solid;     
  13.         border-width:1px 0px 0px 1px;   
  14.         background: #F3F0F0;  
  15.         margin-top:25px;  
  16.     }  
  17.       
  18.     .td0{  
  19.         border:#C8C8C8 solid;    
  20.         border-width:0 0 1px 0;  
  21.     }  
  22.       
  23.     .td2{  
  24.         border:#C8C8C8 solid;     
  25.         border-width:0 1px 1px 0 ;  
  26.     }  
  27.       
  28.     .barcon {  
  29.         width: 1000px;  
  30.         margin: 0 auto;  
  31.         text-align: center;  
  32.      }  
  33.   
  34.     .barcon1 {  
  35.         font-size: 17px;  
  36.         float: left;  
  37.         margin-top: 20px;  
  38.     }  
  39.   
  40.     .barcon2 {  
  41.         float: right;  
  42.     }  
  43.   
  44.     .barcon2 ul {  
  45.         margin: 20px 0;  
  46.         padding-left: 0;  
  47.         list-style: none;  
  48.         text-align: center;  
  49.     }  
  50.   
  51.     .barcon2 li {  
  52.         display: inline;  
  53.     }  
  54.   
  55.     .barcon2 a {  
  56.         font-size: 16px;  
  57.         font-weight: normal;  
  58.         display: inline-block;  
  59.         padding: 5px;  
  60.         padding-top: 0;  
  61.         color: black;  
  62.         border: 1px solid #ddd;  
  63.         background-color: #fff;  
  64.     }  
  65.   
  66.     .barcon2 a:hover{  
  67.         background-color: #eee;  
  68.     }  
  69.   
  70.     .ban {  
  71.         opacity: .4;  
  72.     }  
  73.  </style>  
  74. </head>  
  75. <body>  
  76.     <table width="950" cellpadding="0" cellspacing="0" class="table2" align="center">  
  77.     <thead>  
  78.     <tr>  
  79.     <td colspan="3" height="33" class="td0"> </td>  
  80.     <td align="center" class="td2"><a href="###">添加用户</a></td>  
  81.     </tr>  
  82.     <tr align="center">  
  83.         <th width="150" height="33" class="td2">序号</th>  
  84.         <th width="300" class="td2">用户名</th>  
  85.         <th width="250" class="td2">权限</th>  
  86.         <th width="250" class="td2">操作</th>  
  87.     </tr>  
  88.     </thead>  
  89.     <tbody id="adminTbody">  
  90.     <tr align="center">  
  91.         <td class="td2" height="33" width="150">1</td>  
  92.         <td class="td2" >admin</td>  
  93.         <td class="td2" >管理员</td>  
  94.         <td class="td2" ><a href="###">修改</a></td>  
  95.     </tr>  
  96.     </tbody>  
  97. </table>  
  98. <div id="barcon" class="barcon" >  
  99.     <div id="barcon1" class="barcon1"></div>  
  100.         <div id="barcon2" class="barcon2">  
  101.             <ul>  
  102.                 <li><a href="###" id="firstPage">首页</a></li>  
  103.                 <li><a href="###" id="prePage">上一页</a></li>  
  104.                 <li><a href="###" id="nextPage">下一页</a></li>  
  105.                 <li><a href="###" id="lastPage">尾页</a></li>  
  106.                 <li><select id="jumpWhere">  
  107.                 </select></li>  
  108.                 <li><a href="###" id="jumpPage" onclick="jumpPage()">跳转</a></li>  
  109.             </ul>  
  110.         </div>  
  111. </div>  
  112. <script src="jquery.js"></script>  
  113. <script>  
  114. /*动态生成用户函数 
  115.  num为生成的用户数量 
  116. */  
  117. function dynamicAddUser(num){  
  118.     for(var i=1;i<=num;i++)  
  119.     {  
  120.             var trNode=document.createElement("tr");  
  121.             $(trNode).attr("align","center");  
  122.             //序号  
  123.             var tdNodeNum=document.createElement("td");  
  124.             $(tdNodeNum).html(i+1);  
  125.             tdNodeNum.style.width = "150px";  
  126.             tdNodeNum.style.height = "33px";  
  127.             tdNodeNum.className = "td2";  
  128.             //用户名  
  129.             var tdNodeName=document.createElement("td");  
  130.             $(tdNodeName).html("lzj"+i);  
  131.             tdNodeName.style.width = "300px";  
  132.             tdNodeName.className = "td2";  
  133.             //权限              
  134.             var tdNodePri=document.createElement("td");  
  135.             tdNodePri.style.width = "250px";  
  136.             tdNodePri.className = "td2";  
  137.             var priText=document.createElement("span");  
  138.             $(priText).css({"display":"inline-block","text-align":"center"});  
  139.             $(priText).text("普通用户");  
  140.             tdNodePri.appendChild(priText);  
  141.             //操作  
  142.             var tdNodeOper = document.createElement("td");  
  143.             tdNodeOper.style.width = "170px";  
  144.             tdNodeOper.className = "td2";  
  145.             var editA = document.createElement("a");  
  146.             $(editA).attr("href""###").text("编辑");  
  147.             $(editA).css({ display: "inline-block" });  
  148.             tdNodeOper.appendChild(editA);  
  149.   
  150.             trNode.appendChild(tdNodeNum);  
  151.             trNode.appendChild(tdNodeName);  
  152.             trNode.appendChild(tdNodePri);  
  153.             trNode.appendChild(tdNodeOper);  
  154.             $("#adminTbody")[0].appendChild(trNode);  
  155.     }  
  156. }  
  157. $(function(){  
  158.     dynamicAddUser(80);  
  159.     goPage(1,10);  
  160.     var tempOption="";  
  161.     for(var i=1;i<=totalPage;i++)  
  162.     {  
  163.         tempOption+='<option value='+i+'>'+i+'</option>'  
  164.     }  
  165.     $("#jumpWhere").html(tempOption);  
  166. })  
  167.   
  168. /** 
  169.  * 分页函数 
  170.  * pno--页数 
  171.  * psize--每页显示记录数 
  172.  * 分页部分是从真实数据行开始,因而存在加减某个常数,以确定真正的记录数 
  173.  * 纯js分页实质是数据行全部加载,通过是否显示属性完成分页功能 
  174. **/  
  175.   
  176. var pageSize=0;//每页显示行数  
  177. var currentPage_=1;//当前页全局变量,用于跳转时判断是否在相同页,在就不跳,否则跳转。  
  178. var totalPage;//总页数  
  179. function goPage(pno,psize){  
  180.     var itable = document.getElementById("adminTbody");  
  181.     var num = itable.rows.length;//表格所有行数(所有记录数)  
  182.   
  183.      pageSize = psize;//每页显示行数  
  184.     //总共分几页   
  185.     if(num/pageSize > parseInt(num/pageSize)){     
  186.             totalPage=parseInt(num/pageSize)+1;     
  187.        }else{     
  188.            totalPage=parseInt(num/pageSize);     
  189.        }     
  190.     var currentPage = pno;//当前页数  
  191.      currentPage_=currentPage;  
  192.     var startRow = (currentPage - 1) * pageSize+1;   
  193.     var endRow = currentPage * pageSize;  
  194.         endRow = (endRow > num)? num : endRow;      
  195.        //遍历显示数据实现分页  
  196.     /*for(var i=1;i<(num+1);i++){     
  197.         var irow = itable.rows[i-1]; 
  198.         if(i>=startRow && i<=endRow){ 
  199.             irow.style.display = "";     
  200.         }else{ 
  201.             irow.style.display = "none"; 
  202.         } 
  203.     }*/  
  204.   
  205.     $("#adminTbody tr").hide();  
  206.     for(var i=startRow-1;i<endRow;i++)  
  207.     {  
  208.         $("#adminTbody tr").eq(i).show();  
  209.     }  
  210.     var tempStr = "共"+num+"条记录 分"+totalPage+"页 当前第"+currentPage+"页";  
  211.      document.getElementById("barcon1").innerHTML = tempStr;  
  212.        
  213.     if(currentPage>1){  
  214.         $("#firstPage").on("click",function(){  
  215.             goPage(1,psize);  
  216.         }).removeClass("ban");  
  217.         $("#prePage").on("click",function(){  
  218.             goPage(currentPage-1,psize);  
  219.         }).removeClass("ban");     
  220.     }else{  
  221.         $("#firstPage").off("click").addClass("ban");  
  222.         $("#prePage").off("click").addClass("ban");    
  223.     }  
  224.   
  225.     if(currentPage<totalPage){  
  226.         $("#nextPage").on("click",function(){  
  227.             goPage(currentPage+1,psize);  
  228.         }).removeClass("ban")  
  229.         $("#lastPage").on("click",function(){  
  230.             goPage(totalPage,psize);  
  231.         }).removeClass("ban")  
  232.     }else{  
  233.         $("#nextPage").off("click").addClass("ban");  
  234.         $("#lastPage").off("click").addClass("ban");  
  235.     }     
  236.       
  237.     $("#jumpWhere").val(currentPage);  
  238. }  
  239.   
  240.   
  241. function jumpPage()  
  242. {  
  243.     var num=parseInt($("#jumpWhere").val());  
  244.     if(num!=currentPage_)  
  245.     {  
  246.         goPage(num,pageSize);  
  247.     }  
  248. }  
  249.   
  250. </script>  
  251. </body>   
  252. </html>  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多