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 相关文章推荐
表单内同名元素的控制
Nov 22 Javascript
浅析JavaScript中的常用算法与函数
Nov 21 Javascript
jquery的trigger和triggerHandler的区别示例介绍
Apr 20 Javascript
jquery进行数组遍历如何跳出当前的each循环
Jun 05 Javascript
文字垂直滚动之javascript代码
Jul 29 Javascript
javascript判断图片是否加载完成的方法推荐
May 13 Javascript
AngularJS入门教程之更多模板详解
Aug 19 Javascript
jQuery实现表格奇偶行显示不同背景色 就这么简单
Mar 13 Javascript
详解angular中通过$location获取路径(参数)的写法
Mar 21 Javascript
Vue.extend构造器的详解
Jul 17 Javascript
element-ui 中的table的列隐藏问题解决
Aug 24 Javascript
分享5个顶级的JavaScript Ajax组件库
Sep 16 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/08/19 PHP
php+xml实现在线英文词典查询的方法
2015/01/23 PHP
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
2016/10/08 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
如何用javascript去掉字符串里的所有空格
2007/02/08 Javascript
基于jquery的一个简单的脚本验证插件
2010/04/05 Javascript
jQuery中将函数赋值给变量的调用方法
2012/03/23 Javascript
javascript 快速排序函数代码
2012/05/30 Javascript
自定义的一个简单时尚js下拉选择框
2013/11/20 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
用JavaScript实现页面重定向功能的教程
2015/06/04 Javascript
JavaScript调用传递变量参数的相关问题及解决办法
2015/11/01 Javascript
ES6新特性七:数组的扩充详解
2017/04/21 Javascript
Vue DevTools调试工具的使用
2017/12/05 Javascript
详解Node.js中的Async和Await函数
2018/02/22 Javascript
js回调函数仿360开机
2019/12/26 Javascript
js函数和this用法实例分析
2020/03/13 Javascript
Js on及addEventListener原理用法区别解析
2020/07/11 Javascript
JavaScript实现H5接金币功能(实例代码)
2021/02/22 Javascript
[00:32]DOTA2上海特级锦标赛 Ehome战队宣传片
2016/03/03 DOTA
python实现生命游戏的示例代码(Game of Life)
2018/01/24 Python
python实现监控某个服务 服务崩溃即发送邮件报告
2018/06/21 Python
详解Python二维数组与三维数组切片的方法
2019/07/18 Python
python输出决策树图形的例子
2019/08/09 Python
Python基于gevent实现文件字符串查找器
2020/08/11 Python
分享一个页面平滑滚动小技巧(推荐)
2019/10/23 HTML / CSS
html5中audio支持音频格式的解决方法
2018/08/24 HTML / CSS
美国专注于健康商品的网站:eVitamins
2017/01/23 全球购物
澳大利亚最受欢迎的美发用品目的地:AMR
2019/08/28 全球购物
Johnson Fitness澳大利亚:高级健身器材
2021/03/16 全球购物
北京RT科技有限公司.net工程师面试题
2013/02/15 面试题
会计专业应届生求职信
2013/11/24 职场文书
党员干部廉洁承诺书
2014/05/28 职场文书
2015年学校减负工作总结
2015/05/19 职场文书
2015年店长个人工作总结
2015/10/23 职场文书
那些美到让人窒息的诗句,值得你收藏!
2019/08/20 职场文书