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 相关文章推荐
JavaScript XML操作 封装类
Jul 01 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
Dec 19 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
Aug 18 Javascript
教你如何自定义百度分享插件以及bshare分享插件的分享按钮
Jun 20 Javascript
js中的getAttribute方法使用示例
Aug 01 Javascript
学习Javascript闭包(Closure)知识
Aug 07 Javascript
JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)
Jun 19 Javascript
vue中使用vue-router切换页面时滚动条自动滚动到顶部的方法
Nov 28 Javascript
JS实现二维数组横纵列转置的方法
Apr 17 Javascript
在vue中安装使用vux的教程详解
Sep 16 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
Jun 17 Javascript
layui表格分页 记录勾选的实例
Sep 02 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通过字符串调用函数示例
2014/03/02 PHP
PHP简单读取PDF页数的实现方法
2016/07/21 PHP
PHP序列化操作方法分析
2016/09/28 PHP
实例讲解PHP页面静态化
2018/02/05 PHP
javascript中call和apply方法浅谈
2013/09/27 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
2015/04/05 Javascript
jquery实现模拟百分比进度条渐变效果代码
2015/10/29 Javascript
js前端面试题及答案整理(一)
2016/08/26 Javascript
购物车前端开发(jQuery和bootstrap3)
2016/08/27 Javascript
使用JQuery中的trim()方法去掉前后空格
2016/09/16 Javascript
uploader秒传图片到服务器完整代码
2017/04/22 Javascript
基于Jquery Ajax type的4种类型(详解)
2017/08/02 jQuery
JavaScript实现求最大公共子串的方法
2018/02/03 Javascript
AngularJS日期格式化常见操作实例分析
2018/05/17 Javascript
JavaScript两种计时器的实例讲解
2019/01/31 Javascript
详解Bootstrap 学习(一)入门
2019/04/12 Javascript
详解JWT token心得与使用实例
2019/08/02 Javascript
JavaScript实现更换背景图片
2019/10/18 Javascript
如何在wxml中直接写js代码(wxs)
2019/11/14 Javascript
js判断非127开头的IP地址的实例代码
2020/01/05 Javascript
python实现查询苹果手机维修进度
2015/03/16 Python
Python使用MONGODB入门实例
2015/05/11 Python
Python 功能和特点(新手必学)
2015/12/30 Python
Python开发的HTTP库requests详解
2017/08/29 Python
Python实现的选择排序算法原理与用法实例分析
2017/11/22 Python
Python实现识别图片内容的方法分析
2018/07/11 Python
python基于Selenium的web自动化框架
2019/07/14 Python
keras获得model中某一层的某一个Tensor的输出维度教程
2020/01/24 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
2020/03/25 Python
Python 整行读取文本方法并去掉readlines换行\n操作
2020/09/03 Python
Kmeans均值聚类算法原理以及Python如何实现
2020/09/26 Python
Python命令行参数argv和argparse该如何使用
2021/02/08 Python
番木瓜健康和保健产品第一大制造商:Herbal Papaya
2017/04/25 全球购物
结婚周年感言
2014/02/24 职场文书
《游戏王:大师决斗》将推出新卡牌包4月4日上线
2022/03/31 其他游戏
windows server2016安装oracle 11g的图文教程
2022/07/15 Servers