我试图在此解决基于此解决方案的分页: https://stackoverflow.com/a/44844/3214545
我从未真正做过复杂的逻辑,所以我遇到了困难。这是我的代码:
var allPages = 50;
var current = 16;
var pageLinks = [];
function updatePageLinks(current, allPages) {
if (current > 1) {
pageLinks.push('<', 1);
}
if (current > 2) {
pageLinks.push('...');
if (current == allPages && allPages > 3) {
pageLinks.push((current - 2), (current - 1));
}
}
if (current != 1 && current != allPages) {
pageLinks.push(current);
}
if (current < allPages - 1) {
pageLinks.push((current + 1), (current + 2), '...');
if (current == 1 && allPages > 3) {
pageLinks.push((current + 2), '...');
}
}
pageLinks.push(allPages);
if (current < allPages) {
pageLinks.push('>');
}
$('#pages').append("<a href='#'> " + pageLinks + '</a>');
}
我将从应用程序的另一部分加载页码但是目前我只是设置数字,以便我可以测试不同的边缘情况。 当前页面上方是16,总页数是50所以我希望输出类似于:
&lt; 1 2 ... 15 16 17 ... 49 50&gt;
其中始终显示前2页和后2页,当前页面为+和 - 1
问题的例子:
如果当前页面为2,则输出为&lt;,1,2,3,5,&gt;不打印4
如果当前页面设置为2且total为50,则输出为&lt;,1,2,3,10&gt;
任何人都可以帮助我吗?
答案 0 :(得分:4)
我使用您链接的question中的最后一个算法更新了代码
updatePageLinks(16, 50);
function print(value) {
$('#pages').append("<a href='#'>"+value+"</a> ");
}
function updatePageLinks(current, allPages) {
if(allPages==0) return;
if(current>1)print("<");
print(1);
if(current>2) {
print("...");
if(current===allPages&&allPages>3)
print(current-2);
print(current-1);
}
if(current!=1&¤t!=allPages)
print(current);
if(current<allPages-1) {
print(current+1);
if(current==1&&allPages>3)
print(current+2);
print("...");
}
print(allPages);
if(current<allPages)
print(">");
}
<强> JSFiddle 强>