美文网首页
网页版分页功能的实现

网页版分页功能的实现

作者: _Joeyoung_ | 来源:发表于2017-11-22 22:42 被阅读783次

前段时间在写页面的时候涉及到了分页功能,因为从网上引用别人的框架可定制性不强。想着逻辑不难,索性自己写了一个,在此记录一下。

直接上效果:

使用方法:

第一步:在需要使用分页功能的html文件中引入css,js
<link rel="stylesheet" href="../../ty_paging/ty_paging.css">
<script src="../../ty_paging/ty_paging.js"></script>
第二步:在html文件中,在需要添加分页功能的表格后面添加ul
<!-- 分页 -->
<ul id="ty_paging"></ul>
第三步:在js中实现下面函数
//总页数:传服务端分页接口中的总页数
ty_dealPaging(总页数, function (currentPage) {

  /* 分页点击时会响应此回调函数,
    currentPage :当前点击的页码 */

});

到此,分页的功能就实现了。

浅析下实现逻辑:

我把实现分页功能的js,css从项目中分离了出来,半路出家的我在此不敢称对此功能块进行了封装,就是抽离了出来,降低代码耦合性。
我把文件命名为ty_开头,原因很简单。ty是我公司的缩写,这样定义文件名、func名、参数名等,是为了防止与其他文件、函数、全局变量等重名,带来不必要的麻烦。


在ty_paging.js文件中,我定义了一个全局变量
ty_currentPage,只需要给ty_currentPage赋值,就可让其选中对应的分页码,方便还原初始状态。
如:
ty_currentPage = 1;
在需要还原初始状态的地方给该变量赋值为1
在ty_paging.js文件中定义了一个onePageMaxCount变量,只需改变其值即可决定一页最多显示的分页码,我的网页中为5页。

整个分页的核心逻辑也就下面这段代码,不管总页数有多少页,我们只需要处理好展示在网页上的这5个页码的规律,也就能解决所有的问题了。

//定义2个参数记录网页上展示的起点和终点页数
var startIndex = 1,             //起始分页数
    endIndex = maxPage;         //结束分页数

//此处要分几种情况处理:
1. 总页数 <= 一页能展示的分页数 
2. 总页数  > 一页能展示的分页数
     2.1 当前选中页 <= 一页能展示的分页数的一半(大方向取整)
     2.2 当前选中页  > 一页能展示的分页数的一半(大方向取整)
        2.2.1 如果选中最后几页,起始位置和终点是固定不变的
         
if (maxPage <= onePageMaxCount) {//一页能显示下分页数量
  startIndex = 1;
  endIndex = maxPage;
} else {
  if (ty_currentPage <= Math.ceil(onePageMaxCount/2)) {
    startIndex = 1;
    endIndex = onePageMaxCount;
  } else {
    //起始、终点位置逻辑推导
    startIndex = ty_currentPage - (Math.ceil(onePageMaxCount/2)-1);
    endIndex = ty_currentPage + (Math.ceil(onePageMaxCount/2)-1);
    if (endIndex > maxPage) {
      endIndex = maxPage;
      startIndex = maxPage - (onePageMaxCount-1);
    }
  }
}

其他代码是对样式、事件等的处理,文件中备注的也算清楚,一目了然。有需要查看完整分页代码的可以在gitHub上download下来。

千里之行,始于足下~

相关文章

  • 网页版分页功能的实现

    前段时间在写页面的时候涉及到了分页功能,因为从网上引用别人的框架可定制性不强。想着逻辑不难,索性自己写了一个,在此...

  • 分页

    网页版分页功能的实现 前段时间在写页面的时候涉及到了分页功能,因为从网上引用别人的框架可定制性不强。想着逻辑不难,...

  • Thinkphp+Ajax 分页

    引言 众所周知,Thinkphp有自带的分页功能,但主要是通过对网页 的刷新实现。因为每次刷新网页都需要加载静态资...

  • (14)Django - 分页功能

    Django已为开发者内置了分页功能,只需调用Django内置分页功能的函数即可实现数据分页功能。我们在Djang...

  • 十二、MyBatis实现分页功能

    一、本课目标 掌握MyBatis分页实现 二、MyBatis分页功能实现 需求说明: 为用户管理之查询用户列表功能...

  • flask实现分页

    原文地址数据库实现分页offset:使用offset可以实现数据库分页功能questions = Question...

  • MyBatis分页和动态标签

    MyBatis分页 内存分页 MyBatis提供了RowBounds类实现内存分页功能。其原理是首先根据sql语句...

  • 分页功能的实现

    直接上代码吧: 基础版 高级版(增加了url参数的保留功能) 分页的使用: ps:在python脚本中调用djan...

  • SQL server 分页实现

    分页实现:Offset-Fetch 分页实现的方法又多了一种,在SQL Server 2012版本中,TSQL在O...

  • Springboot+Mybatis+mysql实现分页查询

    分页功能是一个很常见的功能点,今天用PageHelper实现了简单的分页查询功能,记录下使用过程,供而大家参考. ...

网友评论

      本文标题:网页版分页功能的实现

      本文链接:https://www.haomeiwen.com/subject/nkdovxtx.html