手动实现分页 发表于 2017-07-05 | 分类于 前端 | 简单分页功能实现一次取出所有的数据,适用于数据量较少的情景 数据表 table123456789101112131415161718192021222324<table id="sample-table-1"> <thead> <tr> <th>序号</th> <th>问题编号</th> <th>问题说明</th> <th>问题类型</th> <th>所属主题</th> <th>UPDATOR</th> <th>操作</th> </tr> </thead> <tbody> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> </tbody></table> 底部页数 有一个页数选择器 bootstrap 样式1234567891011121314151617181920212223242526272829<div class="row" id="pager"> <div class="col-sm-5 col-sm-offset-1"> <label for="pageColumnNumber">共 ${fn:length(questions)} 条, 每页显示 <select class="select-small" id="pageColumnNumber" onchange="changePageColumnNumber()"> <option value="10">10</option> <option value="20">20</option> <option value="50">50</option> <option value="100">100</option> </select> 行 共 <label id="totalPage"></label> 页 </label> </div> <div class="col-sm-6"> <nav aria-label="Page navigation"> <ul class="pagination" id="pagenationUL"> <li onclick="arrowPager(1)"><a href='####'>«</a></li> <li onclick="toPage(1)"><a href='####'>1</a></li> <li onclick="toPage(2)"><a href='####'>2</a></li> <li onclick="toPage(3)"><a href='####'>3</a></li> <li onclick="toPage(4)"><a href='####'>4</a></li> <li onclick="toPage(5)"><a href='####'>5</a></li> <li onclick="arrowPager(0)"><a href='####'>»</a></li> </ul> </nav> </div></div> js 功能实现123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121<script type="text/javascript"> var pageColumnNumber = 10; var currentPage = 1; var begin = 0; var currentPageColumn = 0; var totalColumnNumber = 0; var totalPage = 0; jQuery(function ($) { initPageTable(); }); function arrowPager(flag) { if (flag == 1) { if (currentPage == 1) return; currentPage = currentPage - 1; } else { if (currentPage == totalPage) return; currentPage = currentPage + 1; } begin = (currentPage - 1) * pageColumnNumber + 1; currentPageColumn = currentPage * pageColumnNumber > totalColumnNumber ? (totalColumnNumber - begin + 1 ) : pageColumnNumber; showTable(); showPager(); } function toPage(i) { var nextPage = parseInt($("#pagenationUL li:eq(" + i + ") a").text()); if (isNaN(nextPage)) { return; } currentPage = nextPage; begin = (currentPage - 1) * pageColumnNumber + 1; currentPageColumn = currentPage * pageColumnNumber > totalColumnNumber ? (totalColumnNumber - begin + 1 ) : pageColumnNumber; showTable(); showPager(); } function showPager() { $("#pagenationUL li").removeClass("active"); $("#pagenationUL li").removeClass("disabled"); $("#pagenationUL li").show(); if (totalPage < 6 || currentPage < 4) { initPager(1); $("#pagenationUL li:gt(" + totalPage + ")").hide(); $("#pagenationUL li:eq(6)").show(); $cur = $("#pagenationUL li:eq(" + currentPage + ")"); $cur.addClass("active"); $cur.html("<span>" + currentPage + "</span>"); } else if (currentPage < (totalPage - 1)) { initPager(currentPage - 2); $cur = $("#pagenationUL li:eq(3)"); $cur.addClass("active"); $cur.html("<span>" + currentPage + "</span>"); } else if (currentPage == (totalPage - 1)) { initPager(currentPage - 3); $cur = $("#pagenationUL li:eq(4)"); $cur.addClass("active"); $cur.html("<span>" + currentPage + "</span>"); } else { initPager(currentPage - 4); $cur = $("#pagenationUL li:eq(5)"); $cur.addClass("active"); $cur.html("<span>" + currentPage + "</span>"); } if (currentPage == 1) { $("#pagenationUL li:eq(0)").addClass("disabled"); $("#pagenationUL li:eq(0)").html("<span>«</span>"); } if (currentPage == totalPage) { $("#pagenationUL li:eq(6)").addClass("disabled"); $("#pagenationUL li:eq(6)").html("<span>»</span>"); } } function initPager(start) { $("#pagenationUL li:eq(0)").html("<a href='####'>«</a>"); $("#pagenationUL li:eq(1)").html("<a href='####'>" + start + "</a>"); $("#pagenationUL li:eq(2)").html("<a href='####'>" + (start + 1) + "</a>"); $("#pagenationUL li:eq(3)").html("<a href='####'>" + (start + 2) + "</a>"); $("#pagenationUL li:eq(4)").html("<a href='####'>" + (start + 3) + "</a>"); $("#pagenationUL li:eq(5)").html("<a href='####'>" + (start + 4) + "</a>"); $("#pagenationUL li:eq(6)").html("<a href='####'>»</a>"); } function initPageTable() { currentPage = 1; pageColumnNumber = $("#pageColumnNumber").val(); begin = (currentPage - 1) * pageColumnNumber + 1; totalColumnNumber = $("#sample-table-1").find("tr").length - 1; totalPage = Math.ceil(totalColumnNumber / pageColumnNumber); currentPageColumn = currentPage * pageColumnNumber > totalColumnNumber ? (totalColumnNumber - begin + 1 ) : pageColumnNumber; showTable(); $("#totalPage").text(totalPage); showPager(); } function changePageColumnNumber() { pageColumnNumber = $("#pageColumnNumber").val(); initPageTable(); } function showTable() { $("#sample-table-1 tr:gt(0)").hide(); $("#sample-table-1 tr:gt(" + (begin - 1) + ")").filter(":lt(" + currentPageColumn + ")").show(); }</script>