Функция для отображения информации о результатах таблицы

#javascript #dom #html-table

#javascript #дом #html-таблица

Вопрос:

что я хочу, чтобы моя функция выполняла:

на первой странице «Отображается от 1 до 7 из 11 результатов»

вторая страница «Отображение результатов от 7 до 11 из 11»

и т.д.

переменные, которые у меня есть:

страница — на какой странице вы находитесь (1,2,3…)

records_per_page — сколько результатов отображается на странице (7)

objJson.length — сколько существует результатов

NumPages() — вычисляет количество страниц

Моя текущая функция показывает:

результат на первой странице — «Отображение от 1 до 7 из 11»

результат на второй странице — «Показано от 2 до 14 из 11»

 let changePage = function(page) {
               const listingTable = document.getElementById('listingTable');
     
               if (page < 1) {
                   page = 1;
               } 
               if (page > (numPages() -1)) {
                   page = numPages();
               }

               listingTable.innerHTML = "";

     
               for(let i = (page -1) * records_per_page; i < (page * records_per_page) amp;amp; i < objJson.length; i  ) {
                    let dataTable = document.getElementById("dataTable_info")
                    .innerHTML = `Showing ${page} to ${(page) * records_per_page} of ${objJson.length}`;
                    console.log(i)
                    

                    const tr = document.createElement("tr");

                   const content = `
                   <td>${objJson[i]._id}</td>
                   <td>${objJson[i].firstName}</td>
                   <td>${objJson[i].email}</td>
                   <td>${objJson[i].role}</td>
                   <td>${objJson[i].createdAt.slice(0, 10)}</td>
                   <td>${objJson[i].updatedAt.slice(0, 10)}</td>`;
                   
                   tr.innerHTML = content;
                   listingTable.appendChild(tr);
               }
               checkButtonOpacity();
               selectedPage();
               
           }
 

Ответ №1:

Вы можете использовать эту логику.

 function f(currentPage, totalPage) {
    const pageCount = 1;
    let pages = '',
        firstVisiblePage = currentPage <= pageCount ? 1 : currentPage - pageCount,
        lastVisiblePage = totalPage - currentPage <= pageCount ? totalPage : currentPage   pageCount;

    if (firstVisiblePage > 1) {
        pages  = `<li><a href="#" data-page="1">1</a>`;
        pages  = `<li><a href="#">...</a>`;
    }

    for (let i = firstVisiblePage; i <= lastVisiblePage; i  ) {
        const page = i,
            className = currentPage === page ? "current" : "";

        pages  = `<li><a class="${className}" href="#" data-page="${page}">${page}</a>`;
    }

    if (totalPage - currentPage > pageCount) {
        pages  = `<li><a href="#">...</a>`;
    }

    if (lastVisiblePage < totalPage) {
        pages  = `<li><a href="#" data-page="${totalPage}">${totalPage}</a>`
    }

    const nextPage = currentPage < totalPage ? currentPage   1 : -1;
    const prevPage = currentPage > 1 ? currentPage - 1 : -1;

    return `
        <nav data-pagination>
            <a id="prevPage" class="btn-page-control" href="#" data-page="${prevPage}"><i class=ion-chevron-left>amp;laquo;</i></a>
            <ul class="pages-ul">
                ${pages}
            </ul>
            <a id="nextPage" class="btn-page-control" href="#" data-page="${nextPage}"><i class=ion-chevron-right>amp;raquo;</i></a>
        </nav>`;
}