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 相关文章推荐
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
Apr 12 Javascript
JavaScript 在各个浏览器中执行的耐性
Apr 06 Javascript
Jquery插件写法笔记整理
Sep 06 Javascript
javascript控制swfObject应用介绍
Nov 29 Javascript
js修改table中Td的值(定义td的单击事件)
Jan 10 Javascript
在javascript中对于DOM的加强
Apr 11 Javascript
js操纵dom生成下拉列表框的方法
Feb 24 Javascript
Javascript基础教程之switch语句
Jan 18 Javascript
jQuery DOM插入节点操作指南
Mar 03 Javascript
JQ中$(window).load和$(document).ready区别与执行顺序
Mar 01 Javascript
AjaxUpLoad.js实现文件上传功能
Mar 02 Javascript
uni-app使用countdown插件实现倒计时
Nov 01 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编码规范之注释和文件结构说明
2010/07/09 PHP
基于php常用正则表达式的整理汇总
2013/06/08 PHP
判断php数组是否为索引数组的实现方法
2013/06/13 PHP
PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
2014/05/04 PHP
smarty模板引擎中自定义函数的方法
2015/01/22 PHP
纯PHP代码实现支付宝批量付款
2015/12/24 PHP
简单谈谈PHP中的trait
2017/02/25 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
2019/03/25 PHP
关于jQuery的inArray 方法介绍
2011/10/08 Javascript
JS获取并操作iframe中元素的方法
2013/03/21 Javascript
使用javascipt---实现二分查找法
2013/04/10 Javascript
给js文件传参数(详解)
2014/07/13 Javascript
jQuery实现文本框输入同步的方法
2015/06/20 Javascript
jQuery Mobile 触摸事件实例
2016/06/04 Javascript
jQuery UI Bootstrap是什么?
2016/06/17 Javascript
详解利用exif.js解决ios手机上传竖拍照片旋转90度问题
2016/11/04 Javascript
Three.js利用Detector.js插件如何实现兼容性检测详解
2017/09/26 Javascript
vue2.0 better-scroll 实现移动端滑动的示例代码
2018/01/25 Javascript
Intellij IDEA搭建vue-cli项目的方法步骤
2018/10/20 Javascript
Vue使用lodop实现打印小结
2019/07/06 Javascript
node.js中fs文件系统模块的使用方法实例详解
2020/02/13 Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
2020/05/13 Javascript
Handtrack.js库实现实时监测手部运动(推荐)
2021/02/08 Javascript
[49:12]完美世界DOTA2联赛PWL S2 Magma vs GXR 第二场 11.29
2020/12/02 DOTA
Python获取远程文件大小的函数代码分享
2014/05/13 Python
Python中给List添加元素的4种方法分享
2014/11/28 Python
python3.5使用tkinter制作记事本
2016/06/20 Python
python中MethodType方法介绍与使用示例
2017/08/03 Python
Python获取指定文件夹下的文件名的方法
2018/02/06 Python
Python字符串大小写转换拼接删除空白
2019/09/19 Python
django框架两个使用模板实例
2019/12/11 Python
Python模块的定义,模块的导入,__name__用法实例分析
2020/01/07 Python
Python filter过滤器原理及实例应用
2020/08/18 Python
支部书记四风对照材料
2014/08/28 职场文书
教师群众路线教育实践活动学习笔记
2014/11/05 职场文书
python​格式化字符串
2022/04/20 Python