经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JSJS库框架 » JavaScript » 查看文章
纯JS实现前端动态分页码
来源:cnblogs  作者:littleboyck  时间:2018/10/11 9:20:42  对本文有异议

思路分析:有3种情况

第一种情况,当前页面curPage < 4

第二种情况,当前页面curPage == 4

第三种情况,当前页面curPage>4

此外,还要考虑,当前页码 curPage < pageTotal(总页码)-2,才显示 ...

 

首先,先是前端的布局样式

  1. <body>  /*首先,在body中添加div id="pagination" */      <div id="pagination">

<!-- 后面会在JS中动态追加 ,此处为了,实现前端效果,所以注册
<a class="banBtn pageItem" id="prevBtn">&lt;</a>
<a class="active pageItem" id="first">1</a>
<a href="#" class="pageItem">2</a>
<a href="#" class="pageItem">3</a>
<a href="#" class="pageItem">4</a>
<span class="over">...</span>
<a href="#" class="pageItem" id="last">10</a>
<a href="#" class="pageItem" id="nextBtn">&gt;</a>
-->

  1.      </div>
    </body>

其次,是css代码

  1. *{margin: 0;padding: 0;
  2.         }#pagination{width: 500px;height: 100px;border: 2px solid crimson;
  3.             margin: 50px auto ;padding-top: 50px ;padding-left: 50px;
  4.         }
  5.         .over,.pageItem{float: left;display: block;width: 35px;height: 35px;line-height: 35px;text-align: center;
  6.         }
  7.         .pageItem{border: 1px solid orangered;text-decoration: none;color: dimgrey;margin-right: -1px;/*解决边框加粗问题*/}.pageItem:hover{background-color: #f98e4594;color:orangered ;
  8.         }.clearfix{clear: both;
  9.         }.active{background-color: #f98e4594;color:orangered ;
  10.         }.banBtn{border:1px solid #ff980069;color: #ff980069;
  11.         }#prevBtn{margin-right: 10px;
  12.         }#nextBtn{margin-left: 10px;
  13.         }

JavaScript代码

  1. <script type="text/javascript">    var pageOptions = {pageTotal:10,curPage:7,paginationId:''};
  2.     dynamicPagingFunc(pageOptions);    function dynamicPagingFunc(pageOptions){var pageTotal = pageOptions.pageTotal || 1;var curPage = pageOptions.curPage||1;var doc = document;var paginationId = doc.getElementById(''+pageOptions.paginationId+'') || doc.getElementById('pagination');var html = '';if(curPage>pageTotal){
  3.             curPage =1;
  4.         }/*总页数小于5,全部显示*/if(pageTotal<=5){
  5.             html = appendItem(pageTotal,curPage,html);
  6.             paginationId.innerHTML = html;
  7.         }/*总页数大于5时,要分析当前页*/if(pageTotal>5){if(curPage<=4){
  8.                 html = appendItem(pageTotal,curPage,html);
  9.                 paginationId.innerHTML = html;
  10.             }else if(curPage>4){
  11.                 html = appendItem(pageTotal,curPage,html);
  12.                 paginationId.innerHTML = html;
  13.             }
  14.         }
  15.     }    function appendItem(pageTotal,curPage,html){var starPage = 0;var endPage = 0;
  16.         
  17.         html+='<a class="pageItem" id="prevBtn">&lt;</a>';        if(pageTotal<=5){
  18.             starPage = 1;
  19.             endPage = pageTotal;    
  20.         }else if(pageTotal>5 && curPage<=4){
  21.             starPage = 1;
  22.             endPage = 4;if(curPage==4){
  23.                 endPage = 5;
  24.             }
  25.         }else{if(pageTotal==curPage){
  26.                 starPage = curPage-3;
  27.                 endPage = curPage;
  28.             }else{
  29.                 starPage = curPage-2;
  30.                 endPage = curPage+1;
  31.             }
  32.             html += '<a class="pageItem" id="first">1</a><span class="over">...</span>';
  33.         }        for(let i = starPage;<= endPage;i++){if(i==curPage){
  34.                 html += '<a class="active pageItem" id="first">'+i+'</a>';
  35.             }else{
  36.                 html += '<a href="#" class="pageItem">'+i+'</a>';
  37.             }
  38.         }        if(pageTotal<=5){
  39.             html+='<a href="#" class="pageItem" id="nextBtn">&gt;</a>';
  40.         }else{if(curPage<pageTotal-2){ 
  41.                 html += '<span class="over">...</span>';
  42.             }if(curPage<=pageTotal-2){
  43.                 html += '<a href="#" class="pageItem">'+pageTotal+'</a>';
  44.             }
  45.             html+='<a href="#" class="pageItem" id="nextBtn">&gt;</a>';
  46.         }return html;
  47.     }    
  48. </script>

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号