如何解决不适合的分页输出

How to solve pagination output that do not fit?

本文关键字:不适合 分页 输出 解决 何解决      更新时间:2023-09-26

我的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;
}

请参阅更新后的小提琴。