分享一个自己写的简单的javascript分页组件


Posted in Javascript onFebruary 15, 2015

自己写的一个简单的分页组件,主要功能还有实现都在JS中,html页面中只用增加一个放置生成分页的DIV,并给定容器的id.

html结构如下:

<ul class="pagination" id="pageDIV">

</ul>

class="pagination" 给定了分页的样式,

id="pageDIV"用于放置JS生成的分页

CSS结构如下:

.pagination{

    margin-top: 10px;

    margin-bottom: 10px;

    display: inline-block;

    padding-left: 0;

    margin: 20px 0;

    border-radius: 4px;

}

.pagination>li {

    display: inline;

}

.pagination>li:first-child>a{

    margin-left: 0;

    border-top-left-radius: 4px;

    border-bottom-left-radius: 4px;

}

.pagination>li>a{

    position: relative;

    float: left;

    padding: 6px 12px;

    margin-left: -1px;

    line-height: 1.42857143;

    color: #337ab7;

    text-decoration: none;

    background-color: #fff;

    border: 1px solid #ddd;

    cursor: pointer;

}

.pagination>li>a.navcur{

    background: #cccccc;

    color: #ffffff;

}

下面是JS结构,注意要引用JQuery

/**

 * @pageContentID 渲染分页的DIV元素

 * @curPage 当前开始页

 * @totalCount 总数量

 * @pageRows 每页显示数量

 * @callback 显示数据的回调函数

 */

function PageList(pageContentID,option){

    this.pageContentID=document.getElementById(pageContentID);

    this.curPage=option.curPage;

    this.totalCount=option.totalCount;

    this.pageRows=option.pageRows;

    this.callback=option.callback;

    this.pageSize=Math.ceil(this.totalCount/this.pageRows);

}

PageList.prototype={

    init:function(){

        this.renderbtn();

    },

    firstpage:function(){

        var _self=this;

        _self._firstpage=document.createElement("li");

        _self._firstpageA=document.createElement("a");

        _self._firstpageA.innerHTML="首页";

        _self._firstpage.appendChild(_self._firstpageA);

        this.pageContentID.appendChild(_self._firstpage);

        _self._firstpage.onclick=function(){

            _self.gotopage(1);

        }

    },

    lastpage: function () {

      var _self=this;

        _self._lastpage=document.createElement("li");

        _self._lastpageA=document.createElement("a");

        _self._lastpageA.innerHTML="尾页";

        _self._lastpage.appendChild(_self._lastpageA);

        this.pageContentID.appendChild(_self._lastpage);

        _self._lastpage.onclick= function () {

            _self.gotopage(_self.pageSize);

        }

    },

    prewpage: function () {

        var _self=this;

        _self._prew=document.createElement("li");

        _self._prewA=document.createElement("a");

        _self._prewA.innerHTML="<<";

        _self._prew.appendChild(_self._prewA);

        this.pageContentID.appendChild(_self._prew);

        _self._prew.onclick= function () {

            if(_self.curPage>1){

                _self.curPage--;

            }

            _self.callback.call(this,this.curPage);

            _self.init();

            console.log(_self.curPage);

        }

    },

    nextpage: function () {

        var _self=this;

        _self._next=document.createElement("li");

        _self._nextA=document.createElement("a");

        _self._nextA.innerHTML=">>";

        _self._next.appendChild(_self._nextA);

        this.pageContentID.appendChild(_self._next);

        _self._next.onclick= function () {

            if(_self.curPage<_self.pageSize){

                _self.curPage++;

            }

            _self.callback.call(this,this.curPage);

            _self.init();

            console.log(_self.curPage);

        }

    },

    pagenum: function () {

        var _self=this;

        if(this.pageSize<=10){

            for(var i= 1,len=this.pageSize;i<=len;i++){

                _self._num=document.createElement("li");

                _self._numA=document.createElement("a");

                _self._numA.innerHTML=i;

                _self._num.appendChild(_self._numA);

                this.pageContentID.appendChild(_self._num);

                _self._num.onclick= function () {

                    var curpage = $(this).text();

                    _self.gotopage(curpage);

                }

            }

        }

        else{

            if(_self.curPage<=10){

                for(var i= 1;i<=10;i++){

                    _self._num=document.createElement("li");

                    _self._numA=document.createElement("a");

                    _self._numA.innerHTML=i;

                    _self._num.appendChild(_self._numA);

                    this.pageContentID.appendChild(_self._num);

                    _self._num.onclick= function () {

                        var curpage = $(this).text();

                        _self.gotopage(curpage);

                    }

                }

            }

            else if(_self.curPage>10&&_self.curPage<=this.pageSize){

                if(this.pageSize<Math.ceil(_self.curPage/10)*10){

                    for(var i=Math.floor(_self.curPage/10)*10+1;i<=this.pageSize;i++){

                        if(_self.curPage>this.pageSize)

                        return;

                        _self._num=document.createElement("li");

                        _self._numA=document.createElement("a");

                        _self._numA.innerHTML=i;

                        _self._num.appendChild(_self._numA);

                        this.pageContentID.appendChild(_self._num);

                        _self._num.onclick= function () {

                            var curpage = $(this).text();

                            _self.gotopage(curpage);

                        }

                    }

                }else{

                    if(Math.ceil(_self.curPage/10)*10==_self.curPage){

                        for(var i=_self.curPage-9;i<=_self.curPage;i++){

                            _self._num=document.createElement("li");

                            _self._numA=document.createElement("a");

                            _self._numA.innerHTML=i;

                            _self._num.appendChild(_self._numA);

                            this.pageContentID.appendChild(_self._num);

                            _self._num.onclick= function () {

                                var curpage = $(this).text();

                                _self.gotopage(curpage);

                            }

                        }

                    }else{

                        for(var i=Math.floor(_self.curPage/10)*10+1;i<=Math.ceil(_self.curPage/10)*10;i++){

                            _self._num=document.createElement("li");

                            _self._numA=document.createElement("a");

                            _self._numA.innerHTML=i;

                            _self._num.appendChild(_self._numA);

                            this.pageContentID.appendChild(_self._num);

                            _self._num.onclick= function () {

                                var curpage = $(this).text();

                                _self.gotopage(curpage);

                            }

                        }

                    }

                }

            }

        }

        $(".pagination li").each(function(){

            if($(this)[0].innerText==_self.curPage){

                $(".pagination li").children("a").removeClass("navcur");

                $(this).children("a").addClass("navcur");

            }

        });

    },

    gotopage: function (curpage) {

        this.curPage=curpage;

        this.callback.call(this,this.curPage);

        this.init();

        console.log(this.curPage);

    },

    renderbtn: function () {

        $(".pagination").html("");

        this.firstpage();

        this.prewpage();

        this.pagenum();

        this.nextpage();

        this.lastpage();

    }

};

$(function(){

    var pager = new PageList("pageDIV",{

        curPage:1,

        totalCount:26,

        pageRows:1,

        callback:callbackFuc

    });

    pager.init();

});

function callbackFuc(curpage){

}

说明:

此分页是以10页为标准,低于10页的时候全部显示,大于10页的时候,进行翻页显示余下页数.

调用方法:

$(function(){

    var pager = new PageList("pageDIV",{

        curPage:1,

        totalCount:26,

        pageRows:1,

        callback:callbackFuc

    });

    pager.init();

});

以上就是本分页组件的核心代码了,希望小伙伴们能够喜欢。

Javascript 相关文章推荐
JavaScript入门教程(11) js事件处理
Jan 31 Javascript
基于jQuery的简单的列表导航菜单
Mar 02 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
Sep 09 Javascript
JS中改变this指向的方法(call和apply、bind)
Mar 26 Javascript
JavaScript的Backbone.js框架入门学习指引
May 07 Javascript
修改ligerui 默认确认按钮的方法
Dec 27 Javascript
微信小程序实战之轮播图(3)
Apr 17 Javascript
angularJs中$scope数据序列化的实例
Sep 30 Javascript
关于js陀螺仪的理解分析
Apr 11 Javascript
小程序实现多个选项卡切换
Jun 19 Javascript
vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作
Jul 31 Javascript
vue+openlayers绘制省市边界线
Dec 24 Vue.js
Linux下编译安装php libevent扩展实例
Feb 14 #Javascript
jQuery中extend函数详解
Feb 13 #Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
Feb 13 #Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
Feb 13 #Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
Feb 13 #Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
Feb 13 #Javascript
JS实现固定在右下角可展开收缩DIV层的方法
Feb 13 #Javascript
You might like
PHPMailer邮件发送的实现代码
2013/05/04 PHP
php上传文件中文文件名乱码的解决方法
2013/11/01 PHP
理解PHP中的stdClass类
2014/04/18 PHP
php解析base64数据生成图片的方法
2016/12/06 PHP
PHP使用Redis实现防止大并发下二次写入的方法
2017/10/09 PHP
Laravel-admin之修改操作日志的方法
2019/09/30 PHP
dess中一个简单的多路委托的实现
2010/07/20 Javascript
jQuery 中使用JSON的实现代码
2011/12/01 Javascript
JQuery基础语法小结
2015/02/27 Javascript
JavaScript用select实现日期控件
2015/07/17 Javascript
基于JavaScript如何制作遮罩层对话框
2016/01/26 Javascript
JS实现简单的天数计算器完整实例
2017/04/28 Javascript
JavaScript异步加载问题总结
2018/02/17 Javascript
Vue.js如何使用Socket.IO的示例代码
2019/09/05 Javascript
vue-cli3跨域配置的简单方法
2019/09/06 Javascript
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
2019/10/26 Javascript
解决小程序无法触发SESSION问题
2020/02/03 Javascript
详解Python的Django框架中inclusion_tag的使用
2015/07/21 Python
Django的数据模型访问多对多键值的方法
2015/07/21 Python
Python中Class类用法实例分析
2015/11/12 Python
Django Admin实现上传图片校验功能
2016/03/06 Python
Python 读取有公式cell的结果内容实例方法
2020/02/17 Python
Python实现疫情通定时自动填写功能(附代码)
2020/05/27 Python
Python 连接 MySQL 的几种方法
2020/09/09 Python
css3 transform及原生js实现鼠标拖动3D立方体旋转
2016/06/20 HTML / CSS
阿根廷网上配眼镜:SmartBuyGlasses阿根廷
2016/08/19 全球购物
会计员岗位职责
2014/03/15 职场文书
生活小常识广播稿
2014/09/16 职场文书
平面设计师岗位职责
2014/09/18 职场文书
机关作风整顿个人整改措施思想汇报
2014/09/29 职场文书
乡镇党员群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
党的群众路线整改落实情况汇报
2014/10/28 职场文书
少先队中队工作总结2015
2015/07/23 职场文书
喜迎建国70周年:有关爱国的名言名句
2019/09/24 职场文书
numpy数据类型dtype转换实现
2021/04/24 Python
Win11 S Mode版本泄露 正式上线后叫做Windows 11 SE
2021/11/21 数码科技