js分页

方法一

一: 先看效果图
在这里插入图片描述

二:主要功能:
上一页,下一页,跳转,尾页,

三: 代码

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
    #box div{
    float: left; margin: 10px;
    -moz-user-select: none; /*火狐*/
    -webkit-user-select: none; /*webkit浏览器*/
    -ms-user-select: none; /*IE10*/
    -khtml-user-select: none; /*早期浏览器*/
    user-select: none;
    }
    #box::after{
        content:''; overflow: hidden; clear:both;height: 0; display: block; zoom: 1;
    }
    #box .jump input{ width: 30px; margin-right: 10px;}
    #box .pages span{     
    display: inline-block;
    cursor: pointer;
    width: 20px;
    height: 20px;
    border: 1px solid balck;
    margin: 0 5px;
    border: 1px solid black;
    text-align: center; 
    }
    .firstpage,.lastpage,.prepage,.nextpage,.btn{cursor: pointer;}
    </style>
</head>
<body>
    <div id="box">
        <div class="firstpage">首页</div><div class="prepage">上一页</div><div class="pages"></div>
        <div class="nextpage">下一页</div><div class="lastpage">尾页</div><div class="jump"><input type="text"><button class="btn">跳转</button></div>
    </div>
    <script src="./jquery.min.js"></script>
    <script src="./page.js"></script>
</body>
</html>

js:

var page = {
    init: function(){
        this.goPage(7,4,5,200)
    },
    /**
     * 
     * @param {当前页} cur 
     * @param {一页显示的数量} onepage 
     * @param {页码显示范围} range 
     * @param {数据总量} total 
     */
    goPage:function(cur,onepage,range,total){
        var dest= $('.pages');
        var _this=this;
        var totalPage = Math.ceil(total/onepage); //总页码数
         var tempStr='';
         var currentPage = cur;
         //根据页码范围控制页码显示
            tempStr = _this.createTemplete(totalPage,range,currentPage);

           dest.html();
           dest.html(tempStr);  
           $("#box span:contains("+currentPage+")").css({'background':'red'}).siblings().css({'background':'none'})
            //上一页事件 
            $('.prepage').on('click',function(){
                 if(currentPage>1){
                    currentPage-=1;
                tempStr = _this.createTemplete(totalPage,range,currentPage);
                dest.html();
                dest.html(tempStr); 
                $("#box span:contains("+currentPage+")").css({'background':'red'}).siblings().css({'background':'none'})
                 }
            });
            //下一页事件
            $('.nextpage').on('click',function(){
                currentPage+=1
                if(currentPage<totalPage){
                    tempStr = _this.createTemplete(totalPage,range,currentPage);
                    dest.html();
                    dest.html(tempStr); 
                    $("#box span:contains("+currentPage+")").css({'background':'red'}).siblings().css({'background':'none'})
                }else{
                    return false
                }
            });
          //首页
          $('.firstpage').on('click',function(){
              currentPage=1;
            _this.goPage(1,onepage,range,total)
            $("#box span:contains("+currentPage+")").css({'background':'red'}).siblings().css({'background':'none'})
          })
          //尾页
          $('.lastpage').on('click',function(){
              currentPage=totalPage;
            _this.goPage(totalPage,onepage,range,total)
            $("#box span:contains("+currentPage+")").css({'background':'red'}).siblings().css({'background':'none'})
          }) 
          //跳转
          $('.btn').on('click',function(){
              currentPage = parseInt($('#box input').val());
              console.log(currentPage)
              tempStr = _this.createTemplete(totalPage,range,currentPage);
              dest.html();
              dest.html(tempStr); 
              $("#box span:contains("+currentPage+")").css({'background':'red'}).siblings().css({'background':'none'})
          })
          //页码
          $('.pages').on('click','span',function(){
              currentPage=parseInt($(this).text())
              console.log(this)
              tempStr = _this.createTemplete(totalPage,range,currentPage);
              dest.html();
              dest.html(tempStr); 
              $("#box span:contains("+currentPage+")").css({'background':'red'}).siblings().css({'background':'none'})
          })
    },
    createTemplete: function(total,range,currentPage){
        var tempStr='';
        if(total<=range){
            for(var pageIndex= 1;pageIndex<total+1;pageIndex++){
                tempStr+="<span>"+pageIndex+"</span>";
                
             }
            }else{
                    if(currentPage>=total-range){
                        var startPage = total-range;
                        for(var i=startPage; i<=total;i++){
                            tempStr+="<span>"+i+"</span>" 
                    }
                    }else{
                        var startPage=currentPage;
                        for(var i =startPage;i<=startPage+range;i++){
                        tempStr += "<span>"+i+"</span>"
                    }
                    }
                } 
                return tempStr;
    },
}
$(function(){
    page.init();
})

总结:函数还可以进一步优化,所有的按钮都是事先写好的,还可以用一下方式来做分页。

方法二:

说明: 第二种参考了网上的代码 参考地址,增加了页码显示范围,该方法按钮是动态生成的。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
        <table id="idData" width="70%">
          <tr><td>user1</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user2</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user3</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user4</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user5</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user6</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user7</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user8</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user9</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user10</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user11</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user12</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user13</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user14</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user15</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user16</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user17</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user18</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user19</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user20</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user21</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user22</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user23</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user24</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user25</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user26</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user27</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user28</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user29</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
          <tr><td>user30</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
        </table>
        <table width="60%" align="right">
          <tr><td><div id="barcon" name="barcon"></div></td></tr>
        </table>
    <script src="./jquery.min.js"></script>
   <script>
    
        function goPage(pno){
    var itable = document.getElementById("idData");
    var num = itable.rows.length;//表格所有行数(所有记录数)
    var totalPage = 0;//总页数
    var pageSize = 4;//每页显示行数
    var range=20; //页码显示范围
    //总共分几页
    if(num/pageSize > parseInt(num/pageSize)){
        totalPage=parseInt(num/pageSize)+1;
    }else{
        totalPage=parseInt(num/pageSize);
    }
    var currentPage = pno;//当前页数
    var startRow = (currentPage - 1) * pageSize+1;//开始显示的行  31
    var endRow = currentPage * pageSize;//结束显示的行   40
    endRow = (endRow > num)? num : endRow;    //40
    
    //遍历显示数据实现分页
    for(var i=1;i<(num+1);i++){
        var irow = itable.rows[i-1];
        if(i>=startRow && i<=endRow){
            irow.style.display = "table-row";
        }else{
            irow.style.display = "none";
        }
    }
    var tempStr = "<span>共"+totalPage+"页</span>";
 
    if(currentPage>1){
        tempStr += "<span class='btn' href=\"#\" onClick=\"goPage("+(1)+")\">首页</span>";
        tempStr += "<span class='btn' href=\"#\" onClick=\"goPage("+(currentPage-1)+")\">上一页</span>"
    }else{
        tempStr += "<span class='btn'>首页</span>";
        tempStr += "<span class='btn'>上一页</span>";
    }
    //根据页码范围来动态控制页码
    if(totalPage<=range){
    for(var pageIndex= 1;pageIndex<totalPage+1;pageIndex++){
        tempStr += "<a onclick=\"goPage("+pageIndex+")\"><span>"+ pageIndex +"</span></a>";
     }
    }else{
              if(currentPage>=totalPage-range){
                  var startPage = totalPage-range;
                  for(var i=startPage; i<=totalPage;i++){
                    tempStr += "<a onclick=\"goPage("+i+")\"><span>"+ i +"</span></a>";

                }
              }else{
                  var startPage=currentPage;
                  for(var i =startPage;i<=startPage+range;i++){
                    tempStr += "<a onclick=\"goPage("+i+")\"><span>"+ i +"</span></a>";
                }
              }
          }
    if(currentPage<totalPage){
        tempStr += "<span class='btn' href=\"#\" onClick=\"goPage("+(currentPage+1)+")\">下一页</span>";
       
        tempStr += "<span class='btn' href=\"#\" onClick=\"goPage("+(totalPage)+")\">尾页</span>";
    }else{
        tempStr += "<span class='btn'>下一页</span>";
        tempStr += "<span class='btn'>尾页</span>";
    }
    document.getElementById("barcon").innerHTML = tempStr;
   
}
goPage(1);
    
   </script>
</body>
</html>
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值