如何解决不适合的分页输出
How to solve pagination output that do not fit?
我的HTML代码是这样的:
<div id="pagination"></div>
我的Javascript代码是这样的:
var offset = 9;
var limit_data_per_page = 20;
var limit_page_number = 5;
var total_data = 182;
var content;
content = generate_paging(offset, limit_data_per_page, limit_page_number, total_data);
document.getElementById("pagination").innerHTML = content;
function doPagination(offset,total_data){
content = generate_paging(offset, limit_data_per_page, limit_page_number, total_data);
document.getElementById("pagination").innerHTML = content;
}
function generate_paging(offset, limit_data_per_page, limit_page_number, total_data)
{
var i;
offset = parseInt(offset);
var active = '';
var prev_disabled = '';
var next_disabled = '';
var prev_number = '';
var next_number = '';
var modulus = total_data % limit_data_per_page;
var total_page = (total_data - modulus) / (limit_data_per_page);
var last_page = 'change_page';
var prev_disabled_link = '';
if(modulus > 0)
{
total_page = total_page + 1;
}
var starting_number = offset - Math.floor(limit_page_number / 2);
var last_number = offset + Math.floor(limit_page_number / 2);
prev_number = offset - 1;
if(starting_number < 1)
{
starting_number = 1;
prev_number = 1;
}
var first_page_disabled = '';
var last_page_disabled = '';
var change_page = 'change_page';
if(offset == 1)
{
prev_disabled = 'disabled';
// prev_disabled_link = 'style="pointer-events: none; cursor:pointer;"';
first_page_disabled = 'disabled';
change_page = '';
}
var paging_html = '';
if(total_page<2)
{
first_page_disabled = 'disabled';
last_page_disabled = 'disabled';
}
paging_html += '<li class="first_page '+first_page_disabled+' '+change_page+'" offset="1" data="'+total_data+'" >'+
'<a title="First Page" href="javascript:doPagination(1,'+total_data+');">'+
'<i class="fa fa-angle-double-left"> << </i>'+
'</a>'+
'</li>';
paging_html += '<li class="prev '+prev_disabled+' '+change_page+' first_page" offset="'+prev_number+'" data="'+total_data+'">'+
'<a title="Prev" href="javascript:doPagination('+prev_number+','+total_data+');">'+
'<i class="fa fa-angle-left"> < </i>'+
'</a>'+
'</li>';
for(i = starting_number; i <= last_number; i++)
{
if(i > total_page)
{
next_disabled = 'disabled';
last_page_disabled = 'disabled';
last_page = '';
break;
}
active = '';
if(i == offset)
{
active = 'class="active"';
}
paging_html += '<li '+active+' class="change_page" offset="'+i+'" data="'+total_data+'" >'+
'<a href="javascript:doPagination('+i+','+total_data+');">'+i+'</a>'+
'</li>';
}
next_number = offset + 1;
paging_html += '<li class="next '+next_disabled+' '+last_page+'" offset="'+next_number+'" data="'+total_data+'">'+
'<a title="Next" href="javascript:doPagination('+next_number+','+total_data+');">'+
'<i class="fa fa-angle-right"> > </i>'+
'</a>'+
'</li>';
paging_html += '<li class="last_page '+last_page_disabled+' '+last_page+'" offset="'+total_page+'" data="'+total_data+'" >'+
'<a title="Last Page" href="javascript:doPagination('+total_page+','+total_data+');">'+
'<i class="fa fa-angle-double-right"> >> </i>'+
'</a>'+
'</li>';
return paging_html;
}
演示如下:https://jsfiddle.net/oscar11/xojyvvmw/1/
当我点击第9页时,下一页图标和最后一页图标被禁用。当点击第9页时,下一页图标和最后一页图标不应被禁用。单击第10页或单击最后一页时,下一个图标和最后一页图标被禁用。
如何解决我的问题?
非常感谢
您需要更改以下内容来完成任务。
添加var maxPage = Math.ceil(total_data / limit_data_per_page);
和
// To Check that its the last page
if ( next_number-1 == maxPage )
{
next_disabled = 'disabled';
last_page_disabled = 'disabled';
}
编辑:注释代码
next_disabled = 'disabled';
last_page_disabled = 'disabled';
在中
if(i > total_page)
{
// Comment this code
next_disabled = 'disabled';
last_page_disabled = 'disabled';
和你的工作JsFiddle
var offset = 9;
var limit_data_per_page = 20;
var limit_page_number = 5;
var total_data = 182;
var content;
content = generate_paging(offset, limit_data_per_page, limit_page_number, total_data);
document.getElementById("pagination").innerHTML = content;
function doPagination(offset,total_data){
content = generate_paging(offset, limit_data_per_page, limit_page_number, total_data);
document.getElementById("pagination").innerHTML = content;
}
function generate_paging(offset, limit_data_per_page, limit_page_number, total_data)
{
var i;
offset = parseInt(offset);
var active = '';
var prev_disabled = '';
var next_disabled = '';
var prev_number = '';
var next_number = '';
var modulus = total_data % limit_data_per_page;
var total_page = (total_data - modulus) / (limit_data_per_page);
var last_page = 'change_page';
var prev_disabled_link = '';
// Add this code
var maxPage = Math.ceil(total_data / limit_data_per_page);
if(modulus > 0)
{
total_page = total_page + 1;
}
var starting_number = offset - Math.floor(limit_page_number / 2);
var last_number = offset + Math.floor(limit_page_number / 2);
prev_number = offset - 1;
if(starting_number < 1)
{
starting_number = 1;
prev_number = 1;
}
var first_page_disabled = '';
var last_page_disabled = '';
var change_page = 'change_page';
if(offset == 1)
{
prev_disabled = 'disabled';
// prev_disabled_link = 'style="pointer-events: none; cursor:pointer;"';
first_page_disabled = 'disabled';
change_page = '';
}
var paging_html = '';
if(total_page<2)
{
first_page_disabled = 'disabled';
last_page_disabled = 'disabled';
}
paging_html += '<li class="first_page '+first_page_disabled+' '+change_page+'" offset="1" data="'+total_data+'" >'+
'<a title="First Page" href="javascript:doPagination(1,'+total_data+');">'+
'<i class="fa fa-angle-double-left"> << </i>'+
'</a>'+
'</li>';
paging_html += '<li class="prev '+prev_disabled+' '+change_page+' first_page" offset="'+prev_number+'" data="'+total_data+'">'+
'<a title="Prev" href="javascript:doPagination('+prev_number+','+total_data+');">'+
'<i class="fa fa-angle-left"> < </i>'+
'</a>'+
'</li>';
for(i = starting_number; i <= last_number; i++)
{
if(i > total_page)
{
// Comment this code
//next_disabled = 'disabled';
//last_page_disabled = 'disabled';
last_page = '';
break;
}
active = '';
if(i == offset)
{
active = 'class="active"';
}
paging_html += '<li '+active+' class="change_page" offset="'+i+'" data="'+total_data+'" >'+
'<a href="javascript:doPagination('+i+','+total_data+');">'+i+'</a>'+
'</li>';
}
next_number = offset + 1;
// Add this Code for checking that its the last page
if ( (next_number-1) == maxPage )
{
next_disabled = 'disabled';
last_page_disabled = 'disabled';
}
paging_html += '<li class="next '+next_disabled+' '+last_page+'" offset="'+next_number+'" data="'+total_data+'">'+
'<a title="Next" href="javascript:doPagination('+next_number+','+total_data+');">'+
'<i class="fa fa-angle-right"> > </i>'+
'</a>'+
'</li>';
paging_html += '<li class="last_page '+last_page_disabled+' '+last_page+'" offset="'+total_page+'" data="'+total_data+'" >'+
'<a title="Last Page" href="javascript:doPagination('+total_page+','+total_data+');">'+
'<i class="fa fa-angle-double-right"> >> </i>'+
'</a>'+
'</li>';
return paging_html;
}
.disabled {
pointer-events: none;
cursor: default;
}
.active a{
color:purple;
}
<div id="pagination"></div>
当offset
的值为9时,last_number
将变为>10。因此,即使单击9,下一个和最后一个按钮也会被禁用。我已经检查了如果offset
是9,那么last_number
应该是10。
if(offset == 9) {
last_number=10;
}
请参阅更新后的小提琴。
相关文章:
- 不带jquery的全屏分页
- 用键盘分页jQuery下一个和上一个控件.触发器('点击')不'不起作用
- 数据表不显示与表的分页
- jQuery分页刷新:分页不记得以前页面中更改的样式
- AngularJS - 分页不渲染$scope.手表更换(包括代码笔)
- 分页-标准php或不使用ajax重新加载页面
- 如何解决不适合的分页输出
- jqGrid不显示分页链接
- Angularjs:目录分页控件没有'即使按下页面按钮,也不会显示下一页
- jQuery不会拾取嵌套了标记值的分页
- 分页没有'当我点击javascript和php按钮时,它不起作用
- $http请求在一个请求中返回所有记录而不分页
- 使用jQuery在jsp中分页不起作用
- 如果我不这样做会发生什么;t有页码吗?继续循环帖子..为什么需要分页,对于页脚
- 引导分页下一个上一个不起作用
- Kendo UI网格分页不起作用
- 主干上的无限滚动/分页.js不起作用
- 如何重新加载数据而不使用分页刷新页面
- SpineJS不适合多页网站吗?
- jqGrid将loadonce设置为true,重置行对象后不能分页