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 Array对象基础知识小结
Nov 16 Javascript
jquery 触发a链接点击事件解决方案
May 02 Javascript
jQuery对val和atrr(&quot;value&quot;)赋值的区别介绍
Sep 26 Javascript
jQuery遍历DOM节点操作之filter()方法详解
Apr 14 Javascript
微信小程序之仿微信漂流瓶实例
Dec 09 Javascript
javascript容错处理代码(屏蔽js错误)
Jan 20 Javascript
Three.js实现绘制字体模型示例代码
Sep 26 Javascript
AngularJS中ng-options实现下拉列表的数据绑定方法
Aug 13 Javascript
JointJS JavaScript流程图绘制框架解析
Aug 15 Javascript
解决webpack多页面内存溢出的方法示例
Oct 08 Javascript
JavaScript进阶(三)闭包原理与用法详解
May 09 Javascript
vue实现购物车加减
May 30 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函数积累总结
2019/03/19 PHP
List Information About the Binary Files Used by an Application
2007/06/11 Javascript
jquery 可排列的表实现代码
2009/11/13 Javascript
JavaScript中的eval()函数详解
2013/08/22 Javascript
浅谈javascript属性onresize
2015/04/20 Javascript
JavaScript_ECMA5数组新特性详解
2016/06/12 Javascript
jQuery实现边框动态效果的实例代码
2016/09/23 Javascript
BootStrap tab选项卡使用小结
2020/08/09 Javascript
利用js获取下拉框中所选的值
2016/12/01 Javascript
EasyUI学习之Combobox级联下拉列表(2)
2016/12/29 Javascript
three.js中3D视野的缩放实现代码
2017/11/16 Javascript
vue写一个组件
2018/04/09 Javascript
bootstrap动态调用select下拉框的实例代码
2018/08/09 Javascript
微信小程序控制台提示warning:Now you can provide attr &quot;wx:key&quot; for a &quot;wx:for&quot; to improve performance解决方法
2019/02/21 Javascript
vue商城中商品“筛选器”功能的实现代码
2020/07/01 Javascript
Python比较2个时间大小的实现方法
2018/04/10 Python
关于Python的一些学习总结
2018/05/25 Python
python用户评论标签匹配的解决方法
2018/05/31 Python
tensorflow 获取变量&amp;打印权值的实例讲解
2018/06/14 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
2018/07/02 Python
python实现QQ空间自动点赞功能
2019/04/09 Python
Python实现图片添加文字
2019/11/26 Python
关于pytorch中全连接神经网络搭建两种模式详解
2020/01/14 Python
Python如何通过Flask-Mail发送电子邮件
2020/01/29 Python
python对execl 处理操作代码
2020/06/22 Python
Python filter过滤器原理及实例应用
2020/08/18 Python
如何使用Django Admin管理后台导入CSV
2020/11/06 Python
Kathmandu英国网站:新西兰户外运动品牌
2017/03/27 全球购物
欧舒丹美国官网:L’Occitane美国
2018/02/23 全球购物
领先的英国注册在线药房 :Simply Meds Online
2019/03/28 全球购物
Araks官网:纽约内衣品牌
2020/10/15 全球购物
质量负责人任命书
2014/06/06 职场文书
宿舍标语大全
2014/06/19 职场文书
2014年乡镇团委工作总结
2014/12/18 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书
5人制售《绝地求生》游戏外挂获利500多万元 被判刑
2022/03/31 其他游戏