【发布时间】:2021-04-13 05:22:18
【问题描述】:
我在 javascript 中有一个分页,我想在该分页中添加带点的步骤。 以照片为例,我想要三页后和最后三页前的点。
1 2 3...10 11 12
我有一个 var pagesize 和总项目数。 ajax调用成功时第一次创建分页
// how many items per page
var pageSize = 20;
// initial page to display (first page MUST be 1 and not 0)
var pageNo = 1;
var paginationButtons;
success: function(data) {
var data = JSON.parse(data);
var content = '';
if ( data.errors || data.info.total < 1) {
content = displayEmpty();
} else {
// generate pagination list only when this function is called for the first time
if (initialFetch) {
var totalItems = data.info.total;
var totalPages = calculateTotalPages(totalItems, pageSize);
generatePaginationList(totalPages);
}
content = displayResults(data.my_data);
}
table.innerHTML = content;
}
我这样计算总页数
function calculateTotalPages(totalItems, pageSize) {
return Math.ceil(totalItems/pageSize);
}
我的页面上有那一代分页
function generatePaginationList(totalPages) {
const paginationWrapper = document.querySelector('#pagination-wrapper');
const list = document.createElement('ul');
list.className = 'pagination';
for(i = 0; i < totalPages; i++) {
var listItem = document.createElement('li');
var listItemButton = document.createElement('button');
var listItemButtonText = document.createTextNode(i+1);
// set the page defined in pageNo as active by default
if (i == pageNo-1) listItemButton.className = 'active-page';
listItemButton.appendChild(listItemButtonText);
listItem.appendChild(listItemButton);
list.appendChild(listItem);
}
paginationWrapper.appendChild(list);
paginationButtons = document.querySelectorAll('.pagination li button');
paginationButtons.forEach(btn => {
btn.addEventListener('click', function() {
// unset previous active-page button
document.querySelector('.active-page').classList.remove('active-page');
this.classList.add('active-page');
fetchData(pageSize, this.innerText, false,date_from,date_to); //ajax call on every change of pagination
});
});
}
谢谢。 问候, 乔治
【问题讨论】:
标签: javascript pagination