JavaScript分页组件使用方法详解


Posted in Javascript onJuly 26, 2021

分页组件是web开发中常见的组件,请完成pagination函数,在id为jsPagination的DOM元素中完成分页的显示部分,需求如下

1、最多连续显示5页,居中高亮显示current页(如demo1所示)
2、total为0时,隐藏整个元素(如demo2所示)
3、如果total<=5,则显示全部页数,隐藏“首页”和“末页”元素(如demo3所示)
4、当current居中不足5页,向后(前)补足5页,隐藏“首页”(“末页”)元素(如demo4和demo5所示)
5、total、current均为正整数,1 <= current <= total

JavaScript分页组件使用方法详解

用原生JS实现分页组件,实现上述需求。需要注意下面几点

1:在获取<li>标签的时候,由于上一个<li>标签与下一个<li>标签之前存在文本节点,需要两次使用nextSibling,

page = page.nextSibling.nextSibling;

2:提供的<li>标签的innerHTML为‘',需要在其中添加页码,根据需求中的五种情况写

3:特别注意首页、末页的隐藏情况。当current-2<=1 时隐藏首页,当current+2.>=total隐藏末页,需要隐藏首页、末页存在于上述demo1、demo3、demo4、demo5。(其中demo1 首页、末页的隐藏很容易被忽略掉!)

HTML

<ul class="pagination" id="jsPagination">
    <li>首页</li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li>末页</li>
</ul>

css

.hide{
    display: none!important;
}
.pagination{
    margin: 0 auto;
    padding: 0;
    list-style: none;
    text-align: center;
}
.pagination li{
    display: inline-block;
    width: 30px;
    height: 30px;
    overflow: hidden;
    line-height: 30px;
    margin: 0 5px 0 0;
    font-size: 14px;
    text-align: center;
    border: 1px solid #00bc9b;
    color: #00bc9b;
    cursor: pointer;
}
.pagination li.current,
.pagination li:hover{
    background: #00bc9b;
    color: #ffffff;
}
.demo {
    margin: 10px 0;
    padding: 10px;
    background: #eeeeee;
    text-align: center;
}

JavaScript

function pagination(total, current) {
        var ele=document.getElementById('jsPagination');
        //for demo1
        if(current-2>=1&¤t+2<=total)
        {
            var page=ele.firstChild.nextSibling;
            if(current-2==1)
                page.className='hide';
            for(var i=current-2,p=current-2;i<=current+2;p++,i++)
            {
                page=page.nextSibling;
                console.log(page);
                page=page.nextSibling;
                console.log(page);
                page.innerHTML=i;
                if(i==current)
                    page.className='current';
            }
            if(current+2==total)
            {
                var last=page.nextSibling.nextSibling;
                last.className='hide';
            }
        }
        //for demo2
        else if(total==0)
        {
            ele.className='pagination hide';
        }
        //for demo3
        else if(total<=5)
        {
            var fir=ele.firstChild.nextSibling;
            fir.className='hide';
            var page=fir;
            for(var i=1;i<=5;i++) {
                page = page.nextSibling.nextSibling;
                if (i <= total) {
                    page.innerHTML=i;
                    if(i==current)
                        page.className='current';
                }
                else
                {
                    page.className='hide';
                }
 
            }
            var last=page.nextSibling.nextSibling;
            last.className='hide';
        }
        //for demo4
        else if(current-2<=0)
        {
            var page=ele.firstChild.nextSibling;
            page.className='hide';
            for(var i=1;i<=5;i++) {
                page = page.nextSibling.nextSibling;
                page.innerHTML=i;
                    if(i==current)
                        page.className='current';
            }
 
        }
        //for demo5
        else if(current+2>total)
        {
            var page=ele.firstChild.nextSibling;
            for(var i=total-4;i<=total;i++) {
                page = page.nextSibling.nextSibling;
                page.innerHTML=i;
                if(i==current)
                    page.className='current';
            }
            var last=page.nextSibling.nextSibling;
            last.className='hide';
 
        }
}

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

Javascript 相关文章推荐
js 替换
Feb 19 Javascript
使用jQuery实现dropdownlist的联动效果(sharepoint 2007)
Mar 30 Javascript
ECMAScript6函数剩余参数(Rest Parameters)
Jun 12 Javascript
javascript实现C语言经典程序题
Nov 29 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
Feb 15 Javascript
实现隔行换色效果的两种方式【实用】
Nov 27 Javascript
Angularjs 动态改变title标题(兼容ios)
Dec 29 Javascript
JS多文件上传的实例代码
Jan 11 Javascript
vue中实现methods一个方法调用另外一个方法
Feb 08 Javascript
Angular利用内容投射向组件输入ngForOf模板的方法
Mar 05 Javascript
vue.js中proxyTable 转发请求的实现方法
Sep 20 Javascript
js实现限定区域范围拖拉拽效果
Nov 20 Javascript
webpack的移动端适配方案小结
Jul 25 #Javascript
Vue3.0 手写放大镜效果
ElementUI实现el-form表单重置功能按钮
vue项目多环境配置(.env)的实现
Node与Python 双向通信的实现代码
Jul 16 #Javascript
node.js如何自定义实现一个EventEmitter
Jul 16 #Javascript
node.js使用express-fileupload中间件实现文件上传
Jul 16 #Javascript
You might like
PHP面向对象编程快速入门
2006/12/14 PHP
基于MySQL到MongoDB简易对照表的详解
2013/06/03 PHP
php判断访问IP的方法
2015/06/19 PHP
PHP Oauth授权和本地加密实现方法
2016/08/12 PHP
Laravel框架下的Contracts契约详解
2020/03/17 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
2020/12/16 PHP
js遍历、动态的添加数据的小例子
2013/06/22 Javascript
IE中的File域无法清空使用jQuery重设File域
2014/04/24 Javascript
通过JS判断联网类型和连接状态的实现代码
2015/04/01 Javascript
JavaScript 性能优化小结
2015/10/12 Javascript
js添加事件的通用方法推荐
2016/05/15 Javascript
基于bootstrap的文件上传控件bootstrap fileinput
2016/12/23 Javascript
jQuery.form.js的使用详解
2017/06/14 jQuery
swiper在vue项目中loop循环轮播失效的解决方法
2018/09/15 Javascript
vue使用自定义指令实现拖拽
2021/01/29 Javascript
python 提取文件的小程序
2009/07/29 Python
Python的Urllib库的基本使用教程
2015/04/30 Python
Python用for循环实现九九乘法表
2018/05/31 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
Python GUI编程完整示例
2019/04/04 Python
Python交互式图形编程的实现
2019/07/25 Python
解决Tensorflow占用GPU显存问题
2020/02/03 Python
python实现全排列代码(回溯、深度优先搜索)
2020/02/26 Python
python同时遍历两个list用法说明
2020/05/02 Python
django模板获取list中指定索引的值方式
2020/05/14 Python
使用keras和tensorflow保存为可部署的pb格式
2020/05/25 Python
快速创建python 虚拟环境
2020/11/28 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
2021/02/03 Python
美国最大的城市服装和运动鞋零售商:Jimmy Jazz
2016/11/19 全球购物
MATCHESFASHION.COM法国官网:英国奢侈品零售商
2018/01/04 全球购物
美国NBA官方商店:NBA Store
2019/04/12 全球购物
个人校本研修方案
2014/05/26 职场文书
会计专业求职信
2014/08/10 职场文书
给客户的感谢信
2015/01/21 职场文书
java协程框架quasar和kotlin中的协程对比分析
2022/02/24 Java/Android
java实现自定义时钟并实现走时功能
2022/06/21 Java/Android