【问题标题】:How can I remove the duplicate pages from EJS template pagination?如何从 EJS 模板分页中删除重复页面?
【发布时间】:2021-03-06 00:22:32
【问题描述】:

我发现这个article 用于在我的 MEN 堆栈应用程序中实现分页功能。这篇文章展示了从前端到后端的一切。一切正常,但我正在尝试对其进行一些调整。

文章中的演示应用如下所示:

但是我从头到尾都替换了FirstLast,用110,但是现在我有1和10的重复。像这样:

代码如下:

<% if (pages > 1) { %>

     <ul class="pagination-list">

             <% if (currentPage == 1) { %>

                        <li class="disabled"><a>1</a></li>

             <% } else { %>

                        <li><a href="/1">1</a></li>

             <% } %>


             <% var i = (Number(currentPage) > 5 ? Number(currentPage) - 4 : 1) %>


             <% if (i !== 1) { %>

                        <li class="disabled"><a>...</a></li>

             <% } %>


             <% for (; i <= (Number(currentPage) + 4) && i <= pages; i++) { %>

                  <% if (i == currentPage) { %>

                            <li class="active"><a><%= i %></a></li>

                  <% } else { %>

                            <li><a href="/<%= i %>"><%= i %></a></li>

                  <% } %>

                  <% if (i == Number(currentPage) + 4 && i < pages) { %>

                            <li class="disabled"><a>...</a></li>

                  <% } %>

             <% } %>


             <% if (currentPage == pages) { %>

                     <li class="disabled"><a><%= pages %></a></li>

             <% } else { %>

                     <li><a href="/<%= pages %>"><%= pages %></a></li>

             <% } %>
    </ul>

<% } %>

如何删除重复的?

*** 感谢Mikhail Evdokimov 的教程。 ***

【问题讨论】:

    标签: javascript node.js express pagination ejs


    【解决方案1】:

    尝试将 for 循环更改为:for (; i &lt;= (Number(currentPage) + 4) &amp;&amp; i &lt; pages; i++) {

    这应该可以解决您要删除的 10 的问题。希望它有效,不确定它是否会,现在无法测试它。

    如果你不能在 2 小时内让它工作,那么我可以帮助你,当我可以在我的示例中测试它时。

    编辑

    10 被删除了。我们只是将“小于或等于”更改为“小于”,这意味着最后一个 for 循环没有执行,因为我们已经处于最后一页的最后一个循环。

    现在是1

    var i = (Number(currentPage) > 5 ? Number(currentPage) - 4 : 1)
    

    您应该更改此i 声明。这段代码告诉我们的是:

    If the number of the current page is higher than 5 do:
    Number(currentPage) - 4
    else
    1
    

    因为我们在 for 循环中使用 i 变量作为起点,所以我们应该将 1 更改为 2

    所以正确的声明应该是:

    var i = (Number(currentPage) > 5 ? Number(currentPage) - 4 : 2)
    

    第二次修改:

    现在是... 问题:

    您可能可以将i !== 1 更改为i !== 2

    应该可以解决,原理一样,for循环是从2开始的,所以要改成2。我们告诉它:当我们在页面上时不要显示...1, 2, 3, 4, 5 现在。

    【讨论】:

    • 嘿伙计,感谢您的宝贵时间。是的,它确实删除了 10。完全符合我的想象。但是,我怎样才能删除 1?
    • 是的,没问题。我可以等一百万小时。我只是非常需要帮助。
    • @A.Amit 编辑了原始答案,在上面检查,如果有帮助,请考虑将我的答案标记为已解决,谢谢
    • 哟。它被完美地移除了。你是个天才。但是,兄弟提出了另一个问题。现在,如果我在第 1 页,页面看起来像这样 - 1 ... 2 3 4 5 ... 10。我想直到第 4-5 页才需要开头的...,对吧?
    • @A.Amit 你说得对,你可以把i !== 1改成i !== 2就可以了,原理是一样的,我们是从2开始的,所以要改成2.
    猜你喜欢
    • 1970-01-01
    • 2017-01-04
    • 2023-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 2013-09-07
    相关资源
    最近更新 更多