bootstrap自带分页器的构造函数

来源:互联网 发布:js修改html属性值 编辑:程序博客网 时间:2024/06/06 18:13
/** * 生成分页器 * @param ele 需要添加分页器的元素 * @param offset 偏移量,即从第offset开始 * @param length 总记录条数 * @param showPages 分页器显示的页数,超过则隐藏多余的页 * @param rows 每页显示的记录条数 * @param cssType 分页样式,不填则为默认表格后添加tr */function burster(ele, offset, length, showPages, rows, cssType) {    //将分页器装入table中    if (length && length > offset) {        var pageHtml = "";        //清空需要装入的html        var ass = "";        //需要显示的前页数/当前页        var beforePages = Math.ceil(offset / rows);        //需要显示的后页数        var afterPages = Math.ceil((length - offset ) / rows);        //总页数        var pages = Math.ceil(length / rows);        var k = 0;        //alert("总页数" + pages + " 前页数 " + beforePages + " 后页数 " + afterPages);        //若页数小于showPages页,则全部显示        if (pages >= 0 && pages <= showPages) {            for (k = 0; k < pages; k++) {                if (k == beforePages) {                    pageHtml += "<li class='active' ><a>" + (k + 1) + "</a></li>";                } else {                    pageHtml += "<li><a class='pages' offset='" + (k * rows) + "'>" + (k + 1) + "</a></li>";                }            }        }        //总页数大于showPages页        else if (pages > showPages) {            if (beforePages <= Math.ceil(showPages / 2) && afterPages > showPages + 1) {                for (k = 0; k < showPages; k++) {                    if (k == beforePages) {                        pageHtml += "<li class='active' ><a>" + (k + 1) + "</a></li>";                    } else {                        pageHtml += "<li><a class='pages' offset='" + (k * rows) + "'>" + (k + 1) + "</a></li>";                    }                }                pageHtml += "<li><a class='pages' offset='" + ((pages - 1) * rows) + "'>..." + pages + "</a></li>";            }            else if (beforePages <= Math.ceil(showPages / 2) && afterPages == showPages + 1) {                for (k = 0; k < showPages - 1; k++) {                    if (k == beforePages) {                        pageHtml += "<li class='active' ><a>" + (k + 1) + "</a></li>";                    } else {                        pageHtml += "<li><a class='pages' offset='" + (k * rows) + "'>" + (k + 1) + "</a></li>";                    }                }                pageHtml += "<li><a class='pages' offset='" + ((pages - 1) * rows) + "'>..." + pages + "</a></li>";            }            else if (beforePages <= Math.ceil(showPages / 2) && afterPages <= showPages) {                for (k = 0; k < showPages - 1; k++) {                    if (k == beforePages) {                        pageHtml += "<li class='active' ><a>" + (k + 1) + "</a></li>";                    } else {                        pageHtml += "<li><a class='pages' offset='" + (k * rows) + "'>" + (k + 1) + "</a></li>";                    }                }                pageHtml += "<li><a class='pages' offset='" + ((pages - 1) * rows) + "'>..." + pages + "</a></li>";            }            else if (beforePages > Math.ceil(showPages / 2) && beforePages <= showPages && afterPages > showPages) {                pageHtml += "<li><a class='pages' offset='0'>1...</a></li>";                for (k = beforePages - Math.ceil(showPages / 2) + 1; k < beforePages + Math.ceil(showPages / 2); k++) {                    if (k == beforePages) {                        pageHtml += "<li class='active' ><a>" + (k + 1) + "</a></li>";                    } else {                        pageHtml += "<li><a class='pages' offset='" + (k * rows) + "'>" + (k + 1) + "</a></li>";                    }                }                pageHtml += "<li><a class='pages' offset='" + ((pages - 1) * rows) + "'>..." + pages + "</a></li>";            }            else if (beforePages > showPages && afterPages > showPages) {                pageHtml += "<li><a class='pages' offset='0'>1...</a></li>";                for (k = beforePages - Math.ceil(showPages / 2) + 1; k < beforePages + Math.ceil(showPages / 2); k++) {                    if (k == beforePages) {                        pageHtml += "<li class='active' ><a>" + (k + 1) + "</a></li>";                    } else {                        pageHtml += "<li><a class='pages' offset='" + (k * rows) + "'>" + (k + 1) + "</a></li>";                    }                }                pageHtml += "<li><a class='pages' offset='" + ((pages - 1) * rows) + "'>..." + pages + "</a></li>";            }            else if (beforePages > Math.ceil(showPages / 2) && beforePages <= pages && afterPages <= showPages && afterPages > Math.ceil(showPages / 2) + 1) {                pageHtml += "<li><a class='pages' offset='0'>1...</a></li>";                for (k = beforePages - Math.ceil(showPages / 2) + 1; k < beforePages + Math.ceil(showPages / 2); k++) {                    if (k == beforePages) {                        pageHtml += "<li class='active' ><a>" + (k + 1) + "</a></li>";                    } else {                        pageHtml += "<li><a class='pages' offset='" + (k * rows) + "'>" + (k + 1) + "</a></li>";                    }                }                pageHtml += "<li><a class='pages' offset='" + ((pages - 1) * rows) + "'>..." + pages + "</a></li>";            }            else if (beforePages > pages && afterPages <= showPages && afterPages > Math.ceil(showPages / 2) + 1) {                pageHtml += "<li><a class='pages' offset='0'>1...</a></li>";                for (k = beforePages - Math.ceil(showPages / 2) + 1; k < beforePages + Math.ceil(showPages / 2); k++) {                    if (k == beforePages) {                        pageHtml += "<li class='active' ><a>" + (k + 1) + "</a></li>";                    } else {                        pageHtml += "<li><a class='pages' offset='" + (k * rows) + "'>" + (k + 1) + "</a></li>";                    }                }                pageHtml += "<li><a class='pages' offset='" + ((pages - 1) * rows) + "'>..." + pages + "</a></li>";            }            else if (beforePages > Math.ceil(showPages / 2) && afterPages <= Math.ceil(showPages / 2) + 1) {                pageHtml += "<li><a class='pages' offset='0'>1...</a></li>";                for (k = beforePages - Math.ceil(showPages / 2) + 1; k < pages; k++) {                    if (k == beforePages) {                        pageHtml += "<li class='active' ><a>" + (k + 1) + "</a></li>";                    } else {                        pageHtml += "<li><a class='pages' offset='" + (k * rows) + "'>" + (k + 1) + "</a></li>";                    }                }            }        }        //判断"上一页"和"下一页"是否存在        var upPage;        var downPage;        if (offset == 0 || (offset < rows && (offset % rows != 0))) {            upPage = "<li><a class='pages' offset='" + parseInt(offset) + "' >?</a></li>"        } else {            upPage = "<li><a class='pages' offset='" +                (parseInt(offset) - parseInt(rows)) +                "' >?</a></li>";        }        if (offset >= (length - rows)) {            downPage = "<li><a class='pages' offset='" + parseInt(offset) + "'>?</a></li>"        } else {            downPage = "<li><a class='pages' offset='" +                parseInt(parseInt(offset) + parseInt(rows)) +                "'>?</a></li>"        }        //TODO 自定义分页器的样式        if (cssType) {            if (pages != 1) {//TODO 分页页数小于1页时,不分页                if (cssType == "【自定义的样式名】") {                    ass += "<div id='pager' style='position:relative;height:34px;margin:0; '>" +                        "<ul  style='position:absolute;right:0;margin: 0;' class='pagination'>" +                        upPage + pageHtml + downPage +                        "</ul></div>";                    //table中注入拼装的记录                    ele.append(ass);                }            } else {            }        } else {            //分页部分            ass += "<tr><td colspan='10' align='right'>" +                "<div id='pager' style='position:relative;height:40px;'>" +                "<h4 id='result' style='position:absolute;left:0;'>" +                "共有" + length + "条记录</h4>" +                "<ul  style='position:absolute;right:0;' class='pagination'>" +                upPage + pageHtml + downPage +                "</ul></div></td></tr>";            //table中注入拼装的记录            ele.append(ass);        }    }}
0 0