pagination.ejs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <link rel="stylesheet" href="/stylesheets/pagination.css">
  2. <%
  3. // 计算总页数
  4. const totalPages = Math.ceil(recordsFiltered / length);
  5. // 确定前后展示的页码范围
  6. const startPage = Math.max(1, page - 3); // 前面至少展示2个页码(包括当前页的前一页)
  7. const endPage = Math.min(totalPages, page + 5 - (page % 5 === 0 ? 0 : 1)); // 后面展示页码数根据当前页是否为5的倍数来调整,确保总展示数为5(前面)+1(后面)或6(无省略号时)
  8. const showEllipsis = totalPages > 6 && (startPage > 1 || endPage < totalPages); // 判断是否需要显示省略号
  9. %>
  10. <div class="pagination">
  11. <span style="font-size: 15px; font-family:sans-serif; margin-right: 20px;"><%= translate.total[lang] %> <%= recordsFiltered %> <%= translate.item[lang] %>, <%= length %><%= translate.item[lang] %>/<%= translate.page[lang] %></span>
  12. <ul>
  13. <% for (let i = startPage; i <= endPage; i++) { %>
  14. <li class="<%= i === page ? 'active' : '' %>">
  15. <a href="<%= uri %><%= uri.includes('?')? '&' : '?' %>page=<%= i %>&length=<%= length %>" class="<%= i === page ? 'active' : '' %>"> <%= i %> </a>
  16. </li>
  17. <% } %>
  18. <% if (showEllipsis) { %>
  19. <li class="ellipsis">...</li>
  20. <% } %>
  21. <% if (endPage < totalPages) { %>
  22. <li>
  23. <a href="<%= uri %><%= uri.includes('?')? '&' : '?' %>page=<%= totalPages %>&length=<%= length %>"><%= totalPages %></a>
  24. </li>
  25. <% } %>
  26. </ul>
  27. <input type="number" id="pageInput" min="1" max="<%= totalPages %>">
  28. <button onclick="jumpToPage()"><%= translate.jumpTo[lang] %></button>
  29. </div>
  30. <script>
  31. function jumpToPage() {
  32. var pageInput = document.getElementById('pageInput');
  33. var page = parseInt(pageInput.value, 10);
  34. var totalPages = '<%= totalPages %>'; // 从EJS模板中获取的总页数
  35. if (!isNaN(page) && page > 0 && page <= totalPages) {
  36. window.location.href = `<%= uri %><%= uri.includes('?')? '&' : '?' %>page=${page}&length=<%= length %>`
  37. } else {
  38. alert('<%= translate.wrongPage[lang] %> :(1-<%= totalPages %>)');
  39. }
  40. }
  41. </script>