• JS实现简单分页功能


    这篇文章主要介绍了JS实现的简单分页功能,涉及javascript事件响应及页面元素遍历、动态构造等相关操作技巧,需要的朋友可以参考下

     

    本文实例讲述了JS实现的简单分页功能。分享给大家供大家参考,具体如下:

    HTML部分:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <body onLoad="goPage(1,10);">
      <table id="idData" width="70%">
        <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>
      </table>
      <table width="60%" align="right">
        <tr><td><div id="barcon" name="barcon"></div></td></tr>
      </table>

    js部分:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    /**
     * 分页函数
     * pno--页数
     * psize--每页显示记录数
     * 分页部分是从真实数据行开始,因而存在加减某个常数,以确定真正的记录数
     * 纯js分页实质是数据行全部加载,通过是否显示属性完成分页功能
     **/
    function goPage(pno,psize){
      var itable = document.getElementById("idData");
      var num = itable.rows.length;//表格所有行数(所有记录数)
      console.log(num);
      var totalPage = 0;//总页数
      var pageSize = psize;//每页显示行数
      //总共分几页
      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
        console.log(endRow);
        //遍历显示数据实现分页
      for(var i=1;i<(num+1);i++){
        var irow = itable.rows[i-1];
        if(i>=startRow && i<=endRow){
          irow.style.display = "block";
        }else{
          irow.style.display = "none";
        }
      }
      var tempStr = "共"+num+"条记录 分"+totalPage+"页 当前第"+currentPage+"页";
      if(currentPage>1){
        tempStr += "<a href="#" onClick="goPage("+(1)+","+psize+")">首页</a>";
        tempStr += "<a href="#" onClick="goPage("+(currentPage-1)+","+psize+")"><上一页</a>"
      }else{
        tempStr += "首页";
        tempStr += "<上一页";
      }
      if(currentPage<totalPage){
        tempStr += "<a href="#" onClick="goPage("+(currentPage+1)+","+psize+")">下一页></a>";
        tempStr += "<a href="#" onClick="goPage("+(totalPage)+","+psize+")">尾页</a>";
      }else{
        tempStr += "下一页>";
        tempStr += "尾页";
      }
      document.getElementById("barcon").innerHTML = tempStr;
    }

    完整测试示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>www.jb51.net JS分页</title>
    <script>
    /**
     * 分页函数
     * pno--页数
     * psize--每页显示记录数
     * 分页部分是从真实数据行开始,因而存在加减某个常数,以确定真正的记录数
     * 纯js分页实质是数据行全部加载,通过是否显示属性完成分页功能
     **/
    function goPage(pno,psize){
      var itable = document.getElementById("idData");
      var num = itable.rows.length;//表格所有行数(所有记录数)
      console.log(num);
      var totalPage = 0;//总页数
      var pageSize = psize;//每页显示行数
      //总共分几页
      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
        console.log(endRow);
        //遍历显示数据实现分页
      for(var i=1;i<(num+1);i++){
        var irow = itable.rows[i-1];
        if(i>=startRow && i<=endRow){
          irow.style.display = "block";
        }else{
          irow.style.display = "none";
        }
      }
      var tempStr = "共"+num+"条记录 分"+totalPage+"页 当前第"+currentPage+"页";
      if(currentPage>1){
        tempStr += "<a href="#" onClick="goPage("+(1)+","+psize+")">首页</a>";
        tempStr += "<a href="#" onClick="goPage("+(currentPage-1)+","+psize+")"><上一页</a>"
      }else{
        tempStr += "首页";
        tempStr += "<上一页";
      }
      if(currentPage<totalPage){
        tempStr += "<a href="#" onClick="goPage("+(currentPage+1)+","+psize+")">下一页></a>";
        tempStr += "<a href="#" onClick="goPage("+(totalPage)+","+psize+")">尾页</a>";
      }else{
        tempStr += "下一页>";
        tempStr += "尾页";
      }
      document.getElementById("barcon").innerHTML = tempStr;
    }
    </script>
    </head>
    <body onLoad="goPage(1,10);">
      <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>
    </body>
    </html>

    运行效果图:

  • 相关阅读:
    redis实现分布式缓存
    redis持久化
    Redis五种数据类型
    Azure Digital Twins(1)-创建实例并设置角色
    Azure Digital Twins(2)- 在本地使用ADT Explorer 管理数字孪生
    Azure Digital Twins(3)- 数字孪生体和数字孪生图
    Azure + 5G + AI + IOT可以这么玩
    使用Azure Storage API 上传 文件解决微信小程序中上传图片的问题
    Azure入门(1)- Azure核心概念
    利用 Management Group 和Policy 控制Azure 指定资源的创建
  • 原文地址:https://www.cnblogs.com/A-Blingbling/p/14253576.html
Copyright © 2020-2023  润新知