JS分页案例

JS分页案例

项目中经常会用到分页,自己写了一个但是实在太难看,整理了半天后放弃了。于是在网上找了一个挺不错的,稍微修改后记录在此,以后方便使用。
效果如下:
分页效果

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8">
        <title>分页演示</title>
    </head>

    <body>

        <!--分页按钮显示的位置-->
        <div id="pagerId"></div>

    </body>

    <script type="text/javascript">
        /**
         *  设置页面的按钮 
         * @param {Object} divPager     分页div的id
         * @param {Object} pageIndex    当前页码数
         * @param {Object} pageSize     每页显示的记录数
         * @param {Object} totalCount   总计多少条记录
         * @param {Object} pageChange   分页页按钮的点击事件()
         * @param {Object} opt          页面的显示效果配置
         */
        var pager = function(divPager, pageIndex, pageSize, totalCount, pageChange, opt) {
            var theOpt = {
                barSize: 5, //分页条显示的页码数   
                barTemplate: "{bar}  共{totalPage}页{totalCount}条 {goto}", //显示模板
                autoHide: true, //是否自动隐藏
                showFirst: true, //在totalPage>barSize时是自动否显示第一页链接
                showLast: true, //在totalPage>barSize时是自动否显示最后一页链接
                showGoTo: true, //是否显示GoTo
                autoHideGoTo: true //如果太少是否自动隐藏GoTo
            };
            if (opt) {
                if (opt.barSize)
                    theOpt.barSize = opt.barSize;
                if (opt.barTemplate)
                    theOpt.barTemplate = opt.barTemplate;
                if (opt.autoHide == false)
                    theOpt.autoHide = false;
                if (opt.showFirst == false)
                    theOpt.showFirst = false;
                if (opt.showLast = false)
                    theOpt.showLast = false;
                if (opt.showGoTo == false)
                    theOpt.showGoTo = false;
                if (opt.autoHideGoTo == false)
                    theOpt.autoHideGoTo = false;
            }
            var handles = window.myPagerChanges = (function(x) {
                return x;
            }(window.myPagerChanges || {}));
            if (!myPagerChanges[divPager]) {
                myPagerChanges[divPager] = pageChange;
            }
            var startPage = 0; //分页条起始页
            var endPage = 0; //分页条终止页
            var showFirst = true;
            var showLast = true;
            if (isNaN(pageIndex)) {
                pageIndex = 1;
            }
            pageIndex = parseInt(pageIndex);
            if (pageIndex <= 0)
                pageIndex = 1;
            if (pageIndex * pageSize > totalCount) {
                pageIndex = Math.ceil(totalCount / pageSize);
            }
            if (totalCount == 0) { //如果没数据
                document.getElementById(divPager).innerHTML = "";
                return "";
            }
            var totalPage = Math.ceil(totalCount / pageSize);
            if (theOpt.autoHide && totalCount <= pageSize) { //自动隐藏
                document.getElementById(divPager).innerHTML = "";
                return "";
            }
            if (totalPage <= theOpt.barSize) {
                startPage = 1;
                endPage = this.totalPage;
                theOpt.showLast = theOpt.showFirst = false;
            } else {
                if (pageIndex <= Math.ceil(theOpt.barSize / 2)) { //最前几页时
                    startPage = 1;
                    endPage = theOpt.barSize;
                    theOpt.showFirst = false;
                } else if (pageIndex > (totalPage - theOpt.barSize / 2)) { //最后几页时
                    startPage = totalPage - theOpt.barSize + 1;
                    endPage = totalPage;
                    theOpt.showLast = false;
                } else { //中间的页时
                    startPage = pageIndex - Math.ceil(theOpt.barSize / 2) + 1;
                    endPage = pageIndex + Math.floor(theOpt.barSize / 2);
                }
                if (totalPage <= (theOpt.barSize * 1.5)) {
                    theOpt.showLast = theOpt.showFirst = false;
                }
            }

            function _getLink(index, txt) {
                if (!txt) txt = index;
                //可点击的分页按钮
                return "<a href='javascript:;' style='margin: 2px 5px;border: 1px solid #6d8cad;color: #0269BA;padding: 2px 5px;text-decoration: none;' onclick='myPagerChanges[\"" + divPager + "\"](" + index + ")'>" + txt + "</a>";
            }
            var barHtml = ""; //分页条
            barHtml += pageIndex == 1 ? "" : _getLink(pageIndex - 1, "上一页");
            if (theOpt.showFirst) {
                barHtml += _getLink(1) + "<span>...</span>";
            }
            for (var index = startPage; index <= endPage; index++) {
                if (index == pageIndex) {
                    //不可点击的分页按钮(当前页)
                    barHtml += "<span style='color:red;font-weight:blod; '>" + index + "</span>";
                } else {
                    barHtml += _getLink(index);
                }
            }
            if (theOpt.showLast) {
                barHtml += "<span>...</span>" + _getLink(totalPage);
            }
            barHtml += pageIndex == totalPage ? "" : _getLink(pageIndex + 1, "下一页");
            var gotoHtml = ""; //goto框及按钮
            if (theOpt.showGoTo && theOpt.barTemplate.indexOf("{goto}") > 0) {
                if ((theOpt.autoHideGoTo && totalPage > 15) || theOpt.autoHideGoTo == false) {
                    var txtid = divPager + "_goIndex";
                    var indexVal = "document.getElementById(\"" + txtid + "\").value";
                    //输入框样式
                    gotoHtml += "<input type='text' onkeypress='if(event.keyCode==13){myPagerChanges[\"" + divPager + "\"](" + indexVal + ")}' id='" + txtid + "' value=" + pageIndex + " style='width:30px'> ";
                    //跳转按钮样式
                    gotoHtml += "<input type='button' class='page_bg' value='go' onclick='myPagerChanges[\"" + divPager + "\"](" + indexVal + ")'>";
                }
            }
            //替换模板
            var pagerHtml = theOpt.barTemplate.replace("{bar}", barHtml)
                .replace("{totalCount}", totalCount)
                .replace("{pageIndex}", pageIndex)
                .replace("{totalPage}", totalPage)
                .replace("{goto}", gotoHtml);
            document.getElementById(divPager).innerHTML = pagerHtml;
            return pagerHtml;
        };
        /**
         * 页面发生跳转时的事件
         * @param {Object} index    页码
         */
        var pageChange = function(index) {
            if (index < 0) {} else {
                alert("跳转到" + index + "页,请求数据");
            }
            var html = pager("pagerId", index, 5, 1000, pageChange, {
                showGoTo: true,
                showFirst: false
            });
        };
        //显示分页按钮
        pageChange(-1);
    </script>

</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值