javascript - 算法页面链接

标签 javascript algorithm pagination typescript

我试图根据这里的解决方案找出分页: 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 所以我希望输出类似于:

<1 2 ... 15 16 17 ... 49 50>

始终显示前 2 页和后 2 页,当前页 + 和 - 1

问题示例:

  1. 如果当前页设置为1,则输出为2,3,...,50>
  2. 如果当前页是2,则输出<,1,2,3,5,>不打印4

  3. 如果当前页设置为2,总计为50,则输出为<,1,2,3,10>

  4. 如果当前页设置为5,则输出为<,1,...,5,6,50>

有人可以帮助我吗?

最佳答案

我使用 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&&current!=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

关于javascript - 算法页面链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21606077/

相关文章:

javascript - 用 javascript 从文本文件中读取特定单词

Javascript:将焦点放在 div 父 onClick 输入上

c# - 算法:里程表/蛮力

algorithm - 乘以集合并随机与其他集合合并 - Apache Spark

php - 数学上添加两个多维数组的最有效方法?

javascript - Preloader在线不淡出

angularjs - AngularJS 中如何进行分页?

performance - MongoDB 范围分页

jsp - 如何仅使用 JSTL c :ForEach without javascript or jquery? 进行分页

javascript - 局部 View 和 CSS/Javascript