You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
2.8 KiB
JavaScript
104 lines
2.8 KiB
JavaScript
let pageList = new Array();
|
|
let currentPage = 1;
|
|
const numberPerPage = 12;
|
|
const rows = Array.prototype.slice.call(document.querySelectorAll('tbody tr'));
|
|
const firstBtn = document.getElementById('first');
|
|
const lastBtn = document.getElementById('last');
|
|
const prevBtn = document.getElementById('prev');
|
|
const nextBtn = document.getElementById('next');
|
|
const numberOfPages = getNumberOfPages();
|
|
const pageNumbers = document.getElementById('pageNumbers');
|
|
|
|
firstBtn.addEventListener('click', firstPage, false);
|
|
lastBtn.addEventListener('click', lastPage, false);
|
|
prevBtn.addEventListener('click', prevPage, false);
|
|
nextBtn.addEventListener('click', nextPage, false);
|
|
|
|
window.onload = load(numberOfPages);
|
|
|
|
function getNumberOfPages() {
|
|
return Math.ceil(rows.length / numberPerPage);
|
|
}
|
|
|
|
function generatePageNumbers(pageCount) {
|
|
for (let j = 1; j <= pageCount; j++) {
|
|
const pageNumber = document.createElement('span');
|
|
pageNumber.innerHTML = j;
|
|
pageNumber.classList.add('page-number');
|
|
pageNumbers.appendChild(pageNumber);
|
|
if (j === currentPage) {
|
|
pageNumber.classList.add('active');
|
|
}
|
|
pageNumber.addEventListener('click', jumpToPage, false);
|
|
}
|
|
}
|
|
|
|
function jumpToPage(event) {
|
|
currentPage = event.target.innerHTML;
|
|
loadRows();
|
|
activePageNum(currentPage);
|
|
}
|
|
|
|
function activePageNum(activePage) {
|
|
const pageNumbers = Array.prototype.slice.call(document.querySelectorAll('.page-number'));
|
|
pageNumbers.forEach(function (pageNumber) {
|
|
if (parseInt(pageNumber.innerHTML) === parseInt(activePage)) {
|
|
pageNumber.classList.add('active');
|
|
} else {
|
|
pageNumber.classList.remove('active');
|
|
}
|
|
});
|
|
}
|
|
|
|
function nextPage() {
|
|
currentPage = +currentPage + 1;
|
|
loadRows();
|
|
activePageNum(currentPage);
|
|
}
|
|
|
|
function prevPage() {
|
|
currentPage -= 1;
|
|
loadRows();
|
|
activePageNum(currentPage);
|
|
}
|
|
|
|
function firstPage() {
|
|
currentPage = 1;
|
|
loadRows();
|
|
activePageNum(currentPage);
|
|
}
|
|
|
|
function lastPage() {
|
|
currentPage = numberOfPages;
|
|
loadRows();
|
|
activePageNum(currentPage);
|
|
}
|
|
|
|
function loadRows() {
|
|
const start = (currentPage - 1) * numberPerPage;
|
|
const end = start + numberPerPage;
|
|
for (let i = 0; i < pageList.length; i++) {
|
|
pageList[i].classList.add('hidden');
|
|
}
|
|
pageList = rows.slice(start, end);
|
|
drawRows();
|
|
buttonStates();
|
|
}
|
|
|
|
function drawRows() {
|
|
for (let i = 0; i < pageList.length; i++) {
|
|
pageList[i].classList.remove('hidden');
|
|
}
|
|
}
|
|
|
|
function buttonStates() {
|
|
document.getElementById('next').disabled = currentPage == numberOfPages ? true : false;
|
|
document.getElementById('prev').disabled = currentPage == 1 ? true : false;
|
|
document.getElementById('first').disabled = currentPage == 1 ? true : false;
|
|
document.getElementById('last').disabled = currentPage == numberOfPages ? true : false;
|
|
}
|
|
|
|
function load(pageCount) {
|
|
generatePageNumbers(numberOfPages);
|
|
loadRows();
|
|
} |