我正在尝试在 JavaScript 中创建分页,类似于您现在看到的大多数分页,如果有很多页面,它将使用点来分解页面显示。即(1 2 ... 22 23 24 25 26 27 28 ... 110 111)
这是我到目前为止的代码,但这不起作用。我只显示当前页面。有什么想法我在这里想念的吗?
仅供参考 - 你会注意到我正在使用_.range()
,这是来自 Underscore.js 和$.inArray()
,这是来自 jQuery。
您还会注意到我有iPage
,默认情况下我的分页从 0 开始(page
是我所在的当前页面索引),所以我只是为了显示而添加 1 - 我已经尝试了两种方法,我得到了同样的问题。
非常感谢您的帮助!
编辑:我刚刚在下面添加了一条 else 语句,现在它显示 (1 2 3 21),21 是最后一页,1 是我所在的页面。
var midRange = 7;
var paging = '';
var iPage = page + 1;
if(totalPages > 10) {
var startRange = iPage - Math.floor(midRange / 2);
var endRange = page + Math.floor(midRange / 2);
if(startRange <= 0) {
endRange += Math.abs(startRange + 1);
startRange = 1;
}
if(endRange > totalPages) {
startRange -= (endRange - totalPages);
endRange = totalPages;
}
var range = _.range(startRange, endRange);
for(i = 1; i <= totalPages; i++) {
if(range[0] > 2 && i == range[0]) {
paging += ' ... ';
console.log(paging);
}
inArray = $.inArray(i, range);
if (inArray > -1)
isInArray = true;
else
isInArray = false;
if(i == 0 || i == totalPages || isInArray) {
if(i == iPage) {
paging += '<a href="#"><b>'+i+'</b></a>';
console.log(paging);
} else {
paging += '<a href="#">'+i+'</a>';
}
}
if(range[midRange-1] < totalPages && i == range[midRange-1]) {
paging += ' ... ';
console.log(paging);
}
}
} else {
for(i = 1; i <= totalPages; i++) {
if(i == iPage) {
paging += '<a href="#"><b>'+i+'</b></a>';
console.log(paging);
} else {
paging += '<a href="#">'+i+'</a>';
console.log(paging);
}
}
}