好久之前,参考论坛分页后端模板输出逻辑弄过一个.
function makePage (total, page) {//生成页码
var pages = [];
function createPage(index){//单页码生成
if(page==index){
pages.push('' + page + '');
}else{
pages.push('' + index + '');
}
}
if(total<=10){
for(var i=1;i<=total;i++){
createPage(i);
}
}else{
if(page <= 5) {//总页数大于10且当前页远离总页数(小于5)
for(var i = 1; i <=5; i++) {
createPage(i);
}
pages.push(' … ' + total + '');
}else if(page>=total-3){//总页数大于10且当前页接近总页数(小于总页数-3)
pages.push('' + 1 + ' …');
for(var i=total-4;i<=total;i++){
createPage(i);
}
}else{ //除开上面两个情况
pages.push('' + 1 + ' … ');
for(var i=page-2;i<=page+2;i++){
createPage(i);
}
pages.push(' … ' + total + '');
}
}
if (page > 1 && total > 1) {// 上一页
pages.unshift('上页');
} else {
pages.unshift('上页');
}
if (page < total && total > 1) {// 下一页
pages.push('下页');
} else {
pages.push('下页');
}
contentDom.html(tpl.replace("{pages}", pages.join(" ")));
}
截取部分代码, 这个是生成当前页的总页数,规则是当页码不超过10的时候,全部显示,当大于10页时,根据当前页做处理。
如果当前页小于5, 则显示 前面五个页码+省略号+最后一页。
如果当前页是接近最后几页的,输出 首页码+省略号+后面几页(包括当前页)
剩下的情况,输出首页+省略号+中间几页(包含当前页)+省略号+最后一页。
好像挺复杂的= =,没整理过。参考下~