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动态显示和隐藏datagrid中的某一列的方法
Dec 11 Javascript
简介JavaScript中Boolean.toSource()方法的使用
Jun 05 Javascript
JavaScript头像上传插件源码分享
Mar 29 Javascript
jQuery实现图片滑动效果
Mar 08 Javascript
mui 打开新窗口的方式总结及注意事项
Aug 20 Javascript
Vue+Flask实现简单的登录验证跳转的示例代码
Jan 13 Javascript
vue 点击按钮增加一行的方法
Sep 07 Javascript
js实现ATM机存取款功能
Oct 27 Javascript
微信小程序select下拉框实现源码
Nov 08 Javascript
vue之组件内监控$store中定义变量的变化详解
Nov 08 Javascript
Vue实现小购物车功能
Dec 21 Vue.js
vue中控制mock在开发环境使用,在生产环境禁用方式
Apr 06 Vue.js
基于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中使用Imagick实现各种图片效果实例
2015/01/21 PHP
PHP中for循环与foreach的区别
2017/03/06 PHP
jquery $(document).ready() 与window.onload的区别
2009/12/28 Javascript
JQuery 拾色器插件发布-jquery.icolor.js
2010/10/20 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
2016/07/26 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
2017/01/03 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
JavaScript使用readAsDataURL读取图像文件
2017/05/10 Javascript
vue.js数据绑定操作详解
2018/04/23 Javascript
浅谈JS和jQuery的区别
2019/03/27 jQuery
深入解读Node.js中的koa源码
2019/06/17 Javascript
[01:14]2014DOTA2展望TI 剑指西雅图newbee战队专访
2014/06/30 DOTA
python操作xml文件示例
2014/04/07 Python
python matplotlib 在指定的两个点之间连线方法
2018/05/25 Python
Python实用技巧之利用元组代替字典并为元组元素命名
2018/07/11 Python
用python实现k近邻算法的示例代码
2018/09/06 Python
浅述python中深浅拷贝原理
2018/09/18 Python
详解Numpy中的广播原则/机制
2018/09/20 Python
python高效过滤出文件夹下指定文件名结尾的文件实例
2018/10/21 Python
tensorflow中tf.reduce_mean函数的使用
2020/04/19 Python
HTML5本地存储之Database Storage应用介绍
2013/01/06 HTML / CSS
美国豪华时尚女性精品店:Kirna Zabête
2018/01/11 全球购物
在线学习西班牙语、法语或其他语言:Babbel.com
2018/02/07 全球购物
杭州SQL浙江浙大网新恩普软件有限公司
2013/07/27 面试题
自我评价正确写法范文
2013/12/10 职场文书
企业总经理职责
2014/02/02 职场文书
质量承诺书范文
2014/03/27 职场文书
优秀工会工作者事迹材料
2014/06/02 职场文书
重阳节演讲稿:尊敬帮助老人 弘扬传统美德
2014/09/25 职场文书
离婚协议书怎么写
2015/01/26 职场文书
故宫英文导游词
2015/01/31 职场文书
个人自荐书范文
2015/03/09 职场文书
中学社团活动总结
2015/05/07 职场文书
预防职务犯罪警示教育心得体会
2016/01/15 职场文书
SpringBoot整合minio快速入门教程(代码示例)
2022/04/03 Java/Android
oracle设置密码复杂度及设置超时退出的功能
2022/06/28 Oracle