JS实现分页导航效果


Posted in Javascript onFebruary 19, 2020

前言

最近的项目需要添加一个分页导航的功能,没有用网上封装好的文件。通过JS自己简单实现了效果。下面和大家分享一下。

内容

下图为首次加载后的效果,默认显示5页,

JS实现分页导航效果

当点击下一页时将选中页面的页码置于中间

JS实现分页导航效果

下面让我们来看看实现的代码

第一部分是在页面显示内容的处理

function SetListPage() {
   $.ajax({
    type: "GET",
    url: "ajax/PhoneList.ashx?",
    datatype: 'json',
    success: function (data, textStatus) {
     var li_list = "";
     if (data != "") {
      var cc = jQuery.parseJSON(data);     //转换Json对象
      var pagesize = 6;        //设置每页显示数
      var pagecount = Math.ceil(cc.length / pagesize); //获取页数
      SetPageCount(pagecount);      //设置跳转页签
      for (var j = 0, l = pagecount; j < l; j++) {  //设置页面内容
       if (j == 0) {
        li_list += "<table class='phonetable' >";
       }
       else {
        li_list += "<table class='phonetable hide'>";
       }
       li_list += "<tr>";
       li_list += "<th>姓名</th>";
       li_list += "<th>手机号码</th>";
       li_list += "<th>邮箱</th>";
       li_list += "</tr> ";
       var index = j * pagesize;
       var rowcount = j * pagesize + pagesize;
       if (rowcount > cc.length) {
        rowcount = cc.length;
       }
       for (var i = index; i < rowcount; i++) {
        var Name = cc[i]['Name'];
        var PhoneNO = cc[i]['PhoneNO'];
        var Email = cc[i]['Email'];
        li_list += "<tr>";
        li_list += "<td>" + Name + "</td>";
        li_list += "<td>" + PhoneNO + "</td>";
        li_list += "<td>" + Email + "</td>";
        li_list += "</tr> ";
       }
       li_list += "</table>";
      }
     }     
    }
  });
}

第二部分是动态的设置页码并添加页码导航的方法

function SetPageCount(count) {
   if (count > 0) {  //设置动态页码
    var li_list = "";
    li_list += "<ul>";
    li_list += "<li id='01preage'><a class='prev'><span></span>上一页</a></li>";
    li_list += "<li><ul>";
    li_list += "<li class='01pageIndex'><a class='active'>1</a></li>";
    for (var i = 2; i <= count; i++) {
     if (i <= 5) {
      li_list += "<li class='01pageIndex'><a>" + i + "</a></li>";
     } else {
      li_list += "<li class='01pageIndex'><a style='display: none;'>" + i + "</a></li>";
     }
    }
    li_list += "</ul></li>";
    li_list += "<li id='01nextage'><a>下一页<span></span></a></li>";
    li_list += "</ul>";
    if (li_list != null && li_list.length > 0) {
     $("#PhonePageCount").html(li_list);
     $('.01pageIndex a').click(function () { //添加添加分页导航的事件
      var pagecounts = $('.01pageIndex a').length;
      $(this).addClass('active');
      $(this).parent().siblings().find('a').removeClass('active');
      var index = $(this).parent().index() || 0;
      if (1 < index && index < pagecounts - 2) {
       $('.01pageIndex a').hide()
       $('.01pageIndex a').eq(index - 2).show();
       $('.01pageIndex a').eq(index - 1).show();
       $('.01pageIndex a').eq(index).show();
       $('.01pageIndex a').eq(index + 1).show();
       $('.01pageIndex a').eq(index + 2).show();
      }
      $('#phonelist>table').siblings().hide();
      $('#phonelist>table').eq(index).show();
     })
     $('#01preage').click(function () {
      var currentPageIndex = $('.01pageIndex').find("a[class$='active']").parent().index();
      var pagecounts = $('.01pageIndex a').length;
      if (currentPageIndex > 0) {
       var thisobj = $('.01pageIndex a').eq(currentPageIndex - 1);
       thisobj.addClass('active');
       thisobj.parent().siblings().find('a').removeClass('active');
       if (0 < currentPageIndex && currentPageIndex < pagecounts - 3) {
        $('.01pageIndex a').hide()
        $('.01pageIndex a').eq(currentPageIndex - 3).show();
        $('.01pageIndex a').eq(currentPageIndex - 2).show();
        $('.01pageIndex a').eq(currentPageIndex - 1).show();
        $('.01pageIndex a').eq(currentPageIndex).show();
        $('.01pageIndex a').eq(currentPageIndex + 1).show();
       }
       $('#phonelist>table').siblings().hide();
       $('#phonelist>table').eq(currentPageIndex - 1).show();
      }
     })
     $('#01nextage').click(function () {
      var currentPageIndex = $('.01pageIndex').find("a[class$='active']").parent().index();
      var pagecount = $('.01pageIndex a').length - 1;
      var pagecounts = $('.01pageIndex a').length;
      if (pagecount > currentPageIndex) {
       var thisobj = $('.01pageIndex').eq(currentPageIndex + 1);
       thisobj.find('a').addClass('active');
       thisobj.siblings().find('a').removeClass('active');
       if (0 < currentPageIndex && currentPageIndex < pagecounts - 3) {
        $('.01pageIndex a').hide()
        $('.01pageIndex a').eq(currentPageIndex - 1).show();
        $('.01pageIndex a').eq(currentPageIndex).show();
        $('.01pageIndex a').eq(currentPageIndex + 1).show();
        $('.01pageIndex a').eq(currentPageIndex + 2).show();
        $('.01pageIndex a').eq(currentPageIndex + 3).show();
       }
       $('#phonelist').siblings().hide();
       $('#phonelist>table').eq(currentPageIndex + 1).show();
      }
     })
    }
  }
}

小结

一个小小的功能,在实现的过程中并不容易不断的调试和优化才让这样的需求得到了合理的实现。但敲代码中也让我更多的感受到了页面导航中所需要考虑到的多元素设计。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript中统计Textarea字数并提示还能输入的字符
Jun 10 Javascript
JavaScript控制table某列不显示的方法
Mar 16 Javascript
Jquery日历插件制作简单日历
Oct 28 Javascript
jQuery通用的全局遍历方法$.each()用法实例
Jul 04 Javascript
详解Angular中$cacheFactory缓存的使用
Aug 19 Javascript
Node.js利用Net模块实现多人命令行聊天室的方法
Dec 23 Javascript
Node.JS文件系统解析实例详解
May 15 Javascript
VueJs单页应用实现微信网页授权及微信分享功能示例
Jul 26 Javascript
vue实现动态显示与隐藏底部导航的方法分析
Feb 11 Javascript
jquery图片预览插件实现方法详解
Jul 18 jQuery
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
Sep 09 Javascript
JavaScript实现简单计算器功能
Dec 19 Javascript
vue随机验证码组件的封装实现
Feb 19 #Javascript
JavaScript实现PC端四格密码输入框功能
Feb 19 #Javascript
vue实现带过渡效果的下拉菜单功能
Feb 19 #Javascript
Vue.js仿Select下拉框效果
Feb 18 #Javascript
JavaScript中的惰性载入函数及优势
Feb 18 #Javascript
jquery实现垂直手风琴导航栏
Feb 18 #jQuery
vue微信分享插件使用方法详解
Feb 18 #Javascript
You might like
一个基于PDO的数据库操作类(新) 一个PDO事务实例
2011/07/03 PHP
深入密码加salt原理的分析
2013/06/06 PHP
PHP连接和操作MySQL数据库基础教程
2014/09/29 PHP
WIFI万能钥匙密码查询接口实例
2015/09/28 PHP
php合并数组并保留键值的实现方法
2018/03/12 PHP
javascript 字符 Escape,encodeURI,encodeURIComponent
2009/07/09 Javascript
jquery获取子节点和父节点的示例代码
2013/09/10 Javascript
js仿百度贴吧验证码特效实例代码
2014/01/16 Javascript
nodejs中实现路由功能
2014/12/29 NodeJs
如何通过js实现图片预览功能【附实例代码】
2016/03/30 Javascript
微信小程序 rpx 尺寸单位详细介绍
2016/10/13 Javascript
JQuery 选择器、DOM节点操作练习实例
2017/09/28 jQuery
ejsExcel模板在Vue.js项目中的实际运用
2018/01/27 Javascript
Vue formData实现图片上传
2019/08/20 Javascript
Python编写的com组件发生R6034错误的原因与解决办法
2013/04/01 Python
使用C语言扩展Python程序的简单入门指引
2015/04/14 Python
通过Python来使用七牛云存储的方法详解
2015/08/07 Python
python中如何正确使用正则表达式的详细模式(Verbose mode expression)
2017/11/08 Python
python爬取亚马逊书籍信息代码分享
2017/12/09 Python
Python字符串内置函数功能与用法总结
2019/04/16 Python
python 提取文件指定列的方法示例
2019/08/07 Python
python opencv根据颜色进行目标检测的方法示例
2020/01/15 Python
Python实现遗传算法(二进制编码)求函数最优值方式
2020/02/11 Python
django使用channels实现通信的示例
2020/10/19 Python
删除pycharm鼠标右键快捷键打开项目的操作
2021/01/16 Python
详解如何在登录过期后跳出Ifram框架
2020/09/10 HTML / CSS
Evisu官方网站:日本牛仔品牌,时尚街头设计风格
2016/12/30 全球购物
Ruby如何创建一个线程
2013/03/10 面试题
小学开学寄语
2014/01/19 职场文书
《黄山奇石》教学反思
2014/04/19 职场文书
教育专业毕业生推荐信
2014/07/10 职场文书
债务纠纷委托书
2014/08/30 职场文书
党的群众路线对照检查材料
2014/09/22 职场文书
2014年乡镇人大工作总结
2014/11/25 职场文书
酒会邀请函
2015/01/31 职场文书
2019年朋友圈经典励志语录50条
2019/07/05 职场文书