JavaScript实现列表分页功能特效


Posted in Javascript onMay 15, 2015

最近写了一个js分页的方法,尽管已经有现成的可以用,但还是想自己写写,搞搞清楚。最终实现的效果是:上一页、第一页、…(上n个页码)、n个页码、…(下n个页码)、最后一页、下一页。n可以是奇数也可以是偶数,一般都喜欢取奇数,星石调用的时候传入的参数是5。写的时候,主要注意了以下几个地方:

 页码等于1时,只显示上一页、第一页、最后一页,且都没有跳转;
 页码小于等于2时,不需要中间的n个页码;
 页码小于等于n时,显示所有页码,不显示2个“…”;
 2个“…”换页时,换n个页码,如果接近最前面或最后面几页了,则显示最前面或最后面n个页码。

下面贴出代码,供大家探讨:

//总页数,当前页数,跳转地址,第一页和最后一页之间显示的页码数量
function pageBar(tp,cp,url,pn){
    var str = ‘<ul class=”page”>';
    if(tp>1 && cp>1){
      var prev = cp-1;
      str += ‘<li><a class=”prev” title=”上一页” href=”javascript:goPage(‘+prev+‘,\”+url+‘\');”><span>上一页</span></a></li> ‘;
    }else{
      str += ‘<li><a class=”prev” title=”上一页” href=”javascript:void(0);”><span>上一页</span></a></li> ‘;
    }
    if(tp>1){
      //第一页
      if(cp==1){
        str +=‘<li class=”current”><a href=”javascript:goPage(1,\”+url+‘\');”><span>1</span></a></li> ‘;
      }else{
        str +=‘<li><a href=”javascript:goPage(1,\”+url+‘\');”><span>1</span></a></li> ‘;
      }

      if(tp>2){
        var pnh = Math.floor(pn/2);

        //循环开始页码
        var s = cp-pnh;
        if(s<=1){
          s = 2;
        }

        //循环结束页码
        var e = cp+pnh;
        if(e>=tp){
          e = tp-1;
        }

        if(s<=(1+pnh)){
          if(tp>(pn+2)){
            e = s+(pn-1);
            if(e>=tp){
              e = tp-1;
            }
          }else{
            s = 2;
          }
        }

        if(e>=(tp-pnh)){
          if(tp>(pn+2)){
            s = e-(pn-1);
            if(s<=1){
              s = 2;
            }
          }else{
            e = tp-1;
          }
        }

        if(e<s){
          e = s;
        }

        //第一页后的多页跳转
        if(s>2){
          var sp = cp-pn;
          if(sp<1){
            sp=1;
          }
          str += ‘<li><a name=”break” href=”javascript:goPage(‘+sp+‘,\”+url+‘\');”><span>…</span></a></li> ‘;
        }

        for(var i=s;i<=e;i++){
          if(i==cp){
            str += ‘<li class=”current”><a href=”javascript:goPage(‘+i+‘,\”+url+‘\');”><span>'+i+‘</span></a></li> ‘;
          }else{
            str += ‘<li><a href=”javascript:goPage(‘+i+‘,\”+url+‘\');”><span>'+i+‘</span></a></li> ‘;
          }
        }

        //最后一页前的多页跳转
        if(e < (tp-1)){
          var ep = cp+pn;
          if(ep>tp){
            ep=tp;
          }
          str += ‘<li><a name=”break” href=”javascript:goPage(‘+ep+‘,\”+url+‘\');”><span>…</span></a></li> ‘;
        }
      }

      //最后一页
      if(cp==tp){
        str +=‘<li class=”current”><a href=”javascript:goPage(‘+tp+‘,\”+url+‘\');”><span>'+tp+‘</span></a></li> ‘;
      }else{
        str +=‘<li><a href=”javascript:goPage(‘+tp+‘,\”+url+‘\');”><span>'+tp+‘</span></a></li> ‘;
      }

    }else{
      str +=‘ <li class=”current”><a href=”javascript:void(0);”><span>1</span></a></li> ‘;
    }

    if(tp>1 && cp<tp){
      var next = cp+1;
      str += ‘<li><a class=”next” title=”下一页” href=”javascript:goPage(‘+next+‘,\”+url+‘\');”><span>下一页</span></a></li>';
    }else{
      str += ‘<li><a class=”next” title=”下一页” href=”javascript:void(0);”><span>下一页</span></a></li>';
    }
    str += ‘</ul>';
    return str;
  }

  //跳转页码,跳转地址
  function goPage(cp,url){
    window.location.href = url+cp;
  }

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
jquery.ui.draggable中文文档
Nov 24 Javascript
JavaScript 反科里化 this [译]
Sep 20 Javascript
jQuery中校验时间格式的正则表达式小结
Sep 22 Javascript
javascript full screen 全屏显示页面元素的方法
Sep 27 Javascript
JS实现一键回顶功能示例代码
Oct 28 Javascript
jQuery原型属性和原型方法详解
Jul 07 Javascript
js 自带的sort() 方法全面了解
Aug 16 Javascript
纯前端JavaScript实现Excel IO案例分享
Aug 26 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
Jan 15 Javascript
深入理解Angular.JS中的Scope继承
Jun 04 Javascript
深入理解Vue官方文档梳理之全局API
Nov 22 Javascript
vue 动态给每个页面添加title、关键词和描述的方法
Aug 28 Javascript
基于jQuery插件实现环形图标菜单旋转切换特效
May 15 #Javascript
js生成验证码并直接在前端判断
May 15 #Javascript
javascript实现表格增删改操作实例详解
May 15 #Javascript
javascript实现可全选、反选及删除表格的方法
May 15 #Javascript
javascript实现点击商品列表checkbox实时统计金额的方法
May 15 #Javascript
javascript实现Table排序的方法
May 15 #Javascript
Javascript动态创建表格及删除行列的方法
May 15 #Javascript
You might like
php中通过数组进行高效随机抽取指定条记录的算法
2013/09/09 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
javascript 上下banner替换具体实现
2013/11/14 Javascript
JavaScript实现简单的日历效果
2016/09/25 Javascript
webpack常用配置项配置文件介绍
2016/11/07 Javascript
NodeJS和BootStrap分页效果的实现代码
2016/11/07 NodeJs
解决给dom元素绑定click等事件无效问题的方法
2017/02/17 Javascript
ajax接收后台数据在html页面显示
2017/02/19 Javascript
详解Angular路由 ng-route和ui-router的区别
2017/05/22 Javascript
Vue上传组件vue Simple Uploader的用法示例
2017/08/25 Javascript
three.js中文文档学习之如何本地运行详解
2017/11/20 Javascript
基于cropper.js封装vue实现在线图片裁剪组件功能
2018/03/01 Javascript
微信小程序webSocket的使用方法
2020/02/20 Javascript
云服务器部署Node.js项目的方法步骤(小白系列)
2020/03/23 Javascript
python实现给数组按片赋值的方法
2015/07/28 Python
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
2017/03/11 Python
python删除服务器文件代码示例
2018/02/09 Python
pyqt5 获取显示器的分辨率的方法
2019/06/18 Python
python设计tcp数据包协议类的例子
2019/07/23 Python
python中设置超时跳过,超时退出的方式
2019/12/13 Python
你的自行车健身专家:FaFit24
2016/11/16 全球购物
Parfume Klik丹麦:香水网上商店
2018/07/10 全球购物
固特异美国在线轮胎店:Goodyear Tire
2019/02/23 全球购物
Watch Station官方网站:世界一流的手表和智能手表
2020/01/05 全球购物
Ray-Ban雷朋奥地利官网:全球领先的太阳眼镜品牌
2020/10/12 全球购物
垃圾回收的优点和原理。并考虑2种回收机制
2016/10/16 面试题
职专应届生求职信
2013/11/16 职场文书
简单英文演讲稿
2014/01/01 职场文书
军神教学反思
2014/02/04 职场文书
出纳员岗位职责风险
2014/03/06 职场文书
钱塘江大潮导游词
2015/02/03 职场文书
2015年优质护理服务工作总结
2015/04/08 职场文书
八一建军节主持词
2015/07/01 职场文书
大学生社会服务心得体会
2016/01/22 职场文书
pytorch--之halfTensor的使用详解
2021/05/24 Python
3050和2060哪个好 性能差多少 差距有多大 谁更有性价比
2022/06/17 数码科技