3行代码的分页算法(求起始页和结束页)

 

  涉及到分页时, 除非只显示上一页/下一页, 否则需要计算起始页和结束页. 看过很多代码都是用大量的if-else来实现, 代码量大, 又不简洁. 现在提供一种只需要3行代码的算法.

  一个好的分页算法, 应该具有下面的优点:

  当前页码应该尽量在正中间.

  如果”首页”和”尾页”不可用(当前处于第一页或最后一页), 不要隐藏这两组文字, 以免链接按钮位置变动.

  算法简单.

  下面的算法具有前面1和3两个优点.

  PHP:

  // $curr_index, 当前页码.

  // $link_count, 链接数量.

  // $page_count, 当前的数据的总页数.

  // $start, 显示时的起始页码.

  // $end, 显示时的终止页码.

  $start = max(1, $curr_index - intval($link_count/2));

  $end = min($start + $link_count - 1, $page_count);

  $start = max(1, $end - $link_count + 1);

  JavaScript:

  start = Math.max(1, curr_index - parseInt(link_count/2));

  end = Math.min(page_count, start + link_count - 1);

  start = Math.max(1, end - link_count + 1);

时间: 2024-12-02 12:35:17

3行代码的分页算法(求起始页和结束页)的相关文章

php 3行代码的分页算法(求起始页和结束页)_php技巧

一个好的分页算法, 应该具有下面的优点: 当前页码应该尽量在正中间. 如果"首页"和"尾页"不可用(当前处于第一页或最后一页), 不要隐藏这两组文字, 以免链接按钮位置变动. 算法简单. 下面的算法具有前面1和3两个优点. 复制代码 代码如下: // $curr_index, 当前页码. // $link_count, 链接数量. // $page_count, 当前的数据的总页数. // $start, 显示时的起始页码. // $end, 显示时的终止页码. $

极致之美——百行代码实现全新智能语言第1/6页_javascript技巧

首先要解释一下: "极致之美"不是说月儿的这篇文章,因为本人还没有自大到这种程度:P,它形容的是Lisp和javascript结合的优美形态. 本来以下内容是要在无优首发的,但是不巧完成文章的当天忽然发现无优"弹"了,直到上周末才恢复=.=,由于不能等那么久,所以就先放到月儿在CSDN上的博客里去了. 正如标题所描述的,下文是关于用javascript实现类Lisp语言的技巧,然而重点不在于如何实现一门编程语言,而是在于通过思考和实现过程展示javascript的简

jsp页面框架-关于web前端兼容性问题,代码很简单,求解答

问题描述 关于web前端兼容性问题,代码很简单,求解答 无标题页 function move() { alert("hello world!"); } 在IE下不响应onclick 在火狐下可以 求改正 解决方案 你贴个function有什么用,要贴贴你调用这个function的地方啊 如果是IE10的话你需要下载.net formwork4.0控件适配器放在工程下的App_Browsers文件夹(如果没有这个文件夹就新建一个) 解决方案二: 单纯这个js方法,在任何浏览器下都能被执行

c语言-基于C语言,用蚁群算法求最优路径。百度复制粘贴的别来了。。。要求可以直接运行的代码哈

问题描述 基于C语言,用蚁群算法求最优路径.百度复制粘贴的别来了...要求可以直接运行的代码哈 一个人从上海大学出发,经过若干个地点,路线不重复走,最后回到上海大学,找三条优化路线. 上海大学:北纬N31°19′5.86″ 东经E121°23′21.52″ 星雨城:北纬N31°19′46.58″ 东经E121°24′9.29″ 大康公寓:北纬N31°19′18.88″ 东经E121°25′3.98″ 文景楼:北纬N22°35′23.78″ 东经E113°52′50.67″ 大场中学:北纬N31°

table分页,求具体实现 代码

问题描述 table分页,求具体实现 代码 下面这样的table如何进行分页,先是获取了所有title的内容,然后递增进行显示.求可行的代码. <table id="table2" class="t" cellspacing="0" cellpadding="0" width="80%" id="ajaxtable" align="center"> <

android-《第一行代码》酷欧天气开发中三个问题求解答

问题描述 <第一行代码>酷欧天气开发中三个问题求解答 问题1,如何复制.git这个隐藏目录问题2,为何git push origin master会出现一系列错误问题3,为何我在com.coolweather.app下创建不了包,会提示package already exsists说明只能在src目录下创建,这和书中说的不一样 解决方案 问题三我也遇到了,解决方案:在一个包下在新建其他包:1.1首先更改 1.2.添加包,注意包名命名方式: 1.3.结果如图: 1.4.再新建其他的包: 1.5.

不足80行,一种清晰而又简单通用的分页算法,你有这么想过吗?C#版

分页,是WEB开发中面对的最常见的编程,实现方法多种多样.我也不来评论这些方法的好坏. 但我总感觉它们太复杂,不够清晰不够简单.我十分欣赏PHP中一个Pager.php分页类的算法.http://www.phpclasses.org/browse/file/288.html,作者不详.也在不同的项目中把这种思想转换成不同语言的分页类,你不妨也试试. 这种算法的思路是这样的: 1.把分页后的数据抽象为一个类,你可以把它想象成一个双向链表的一个结点. 结构如下:    1 //页类 2 public

ASP的高效率的分页算法

一种高效的SELECT TOP分页算法.代码如下: <%'每页的记录数dim pagesizepagesize= "30" '读出总记录数,总页数,飘易注Dim TotalRecords,TotalPagesSQLstr="Select count(id) As RecordSum From table1" Set Rs=conn.Execute(SQLstr,0,1) TotalRecords=Rs("RecordSum") if Int

SQLSERVER海量数据库的查询优化及分页算法

分页|数据|数据库|算法|优化 探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页.以下代码说明了我们实例中数据库的"红头文件"一表的部分数据结构: CREATE TABLE [dbo].[TGongwen] (    --TGongwen是红头文件表名    [Gid] [int] IDENTITY (1, 1) NOT NULL ,--本表的id号,也是主键    [title] [varchar] (80) COLLATE Chines