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 相关文章推荐
JavaScript 异步调用框架 (Part 4 - 链式调用)
Aug 04 Javascript
页面版文本框智能提示JS代码
Nov 20 Javascript
Js表格万条数据瞬间加载实现代码
Feb 20 Javascript
javascript实现Table排序的方法
May 15 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
Jan 27 Javascript
全面解析标签页的切换方式
Aug 21 Javascript
关于Vue.js 2.0的Vuex 2.0 你需要更新的知识库
Nov 30 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
May 12 Javascript
收藏AngularJS中最重要的核心功能
Jul 09 Javascript
vue+springboot前后端分离实现单点登录跨域问题解决方法
Jan 30 Javascript
vue-baidu-map 进入页面自动定位的解决方案(推荐)
Apr 28 Javascript
JavaScript实现简单音乐播放器
Apr 17 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/01/22 PHP
PHP 动态生成静态HTML页面示例代码
2014/01/15 PHP
PHP图片裁剪函数(保持图像不变形)
2014/05/04 PHP
php数组添加元素方法小结
2014/12/20 PHP
php仿微信红包分配算法的实现方法
2016/05/13 PHP
PHP使用redis消息队列发布微博的方法示例
2017/06/22 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
2019/10/08 PHP
PHP 8新特性简介
2020/08/18 PHP
ymPrompt的doHandler方法来实现获取子窗口返回值的方法
2010/06/25 Javascript
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
中文字符串截取的js函数代码
2013/04/17 Javascript
浅析jquery的作用与优势
2013/12/02 Javascript
javascript事件模型实例分析
2015/01/30 Javascript
原生JavaScript实现Ajax的方法
2016/04/07 Javascript
微信小程序 欢迎界面开发的实例详解
2016/11/30 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
Angular之toDoList的实现代码示例
2017/12/02 Javascript
详解react关于事件绑定this的四种方式
2018/03/09 Javascript
解决layui的input独占一行的问题
2019/09/10 Javascript
浅谈VUE中演示v-for为什么要加key
2020/01/16 Javascript
linux系统使用python监控apache服务器进程脚本分享
2014/01/15 Python
python一键升级所有pip package的方法
2017/01/16 Python
Django 如何获取前端发送的头文件详解(推荐)
2017/08/15 Python
Python解决走迷宫问题算法示例
2018/07/27 Python
深入了解Python在HDA中的应用
2019/09/05 Python
Python图像读写方法对比
2020/11/16 Python
一款纯css3实现的鼠标经过按钮特效教程
2014/11/09 HTML / CSS
印尼在线精品店:Berrybenka.com
2016/10/22 全球购物
蒂娜商店:Tiina the Store
2019/12/07 全球购物
2014年教师党员自我评价范文
2014/09/22 职场文书
党员教师群众路线个人整改措施
2014/10/28 职场文书
2015年民主生活会发言材料
2014/12/15 职场文书
关于迟到的检讨书
2015/05/06 职场文书
2015年银行个人工作总结
2015/05/14 职场文书
2016道德模范先进事迹材料
2016/02/26 职场文书
Python数据清洗工具之Numpy的基本操作
2021/04/22 Python