Задать вопрос
@timonck

Как сделать чтобы активная страница подсвечивалась?

Добрый вечер коллеги, делаю пагинацию для таблицы не получается сделать страницу активной. Подскажите пожалуйста как можно это сделать а то убил уже пару часов и не могу справится с этой задачей.
  • Вопрос задан
  • 133 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Достаточно добавить один символ... Или убрать. Вот здесь:

if (item.innerText === currentPage) {

Одно значение является строкой, другое числом. Число строке не может быть равно. Так что или выполняйте сравнение с приведением типов:

item.innerText == currentPage

Или превращайте строку в число явным образом:

+item.innerText === currentPage

Это если по-быстрому исправить то, что есть. Но вообще, я бы всё переписал:

document.body.insertAdjacentHTML('beforeend', `
  <div class="container">
    <table>
      <thead>
        <tr>${keys.map(k => `
          <th>${k}</th>`).join('')}
        </tr>
      </thead>
      <tbody></tbody>
    </table>
    <div class="pagination"></div>
  </div>
`);

const tableEl = document.querySelector('.container table');
const paginationEl = document.querySelector('.container .pagination');

paginationEl.addEventListener('click', ({ target: t }) =>
  t.matches('a') && showPage(+t.textContent)
);

function showPage(page) {
  paginationEl.innerHTML = Array
    .from(
      { length: Math.ceil(data.length / rows) },
      (_, i) => `<a${-~i === page ? ' class="active"' : ''}>${-~i}</a>`)
    .join('');

  tableEl.tBodies[0].innerHTML = data
    .slice(~-page * rows, page * rows)
    .map(n => `
      <tr>${keys.map(k => `
        <td>${n[k]}</td>`).join('')}
      </tr>`)
    .join('');
}

showPage(1);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы