简体   繁体   中英

Multiple pagination scripts in one page

function Pager(tableName, itemsPerPage) {
    this.tableName = tableName;
    this.itemsPerPage = itemsPerPage;
    this.currentPage = 1;
    this.pages = 0;
    this.inited = false;

    this.showRecords = function(from, to) {        
      var rows = document.getElementById(tableName).rows;
      // i starts from 1 to skip table header row
      for (var i = 1; i < rows.length; i++) {
         if (i < from || i > to)  
            rows[i].style.display = 'none';
         else
            rows[i].style.display = '';
    }
}

this.showPage = function(pageNumber) {
    if (! this.inited) {
        alert("not inited");
        return;
    }

    var oldPageAnchor = document.getElementById('pg'+this.currentPage);
    oldPageAnchor.className = 'pg-normal';

    this.currentPage = pageNumber;
    var newPageAnchor = document.getElementById('pg'+this.currentPage);
    newPageAnchor.className = 'pg-selected';

    var from = (pageNumber - 1) * itemsPerPage + 1;
    var to = from + itemsPerPage - 1;
    this.showRecords(from, to);
}   

this.prev = function() {
    if (this.currentPage > 1)
        this.showPage(this.currentPage - 1);
}

this.next = function() {
    if (this.currentPage < this.pages) {
        this.showPage(this.currentPage + 1);
    }
}                        

this.init = function() {
    var rows = document.getElementById(tableName).rows;
    var records = (rows.length - 1); 
    this.pages = Math.ceil(records / itemsPerPage);
    this.inited = true;
}

this.showPageNav = function(pagerName, positionId) {
    if (! this.inited) {
        alert("not inited");
            return;
        }
        var element = document.getElementById(positionId);

        var pagerHtml = '<a id="myshow" onmousemove="one()"  onclick="' + pagerName + '.prev();" class="pg-normal pgnleft"> &#171 Prev </a>  ';
        for (var page = 1; page <= this.pages; page++) 
            pagerHtml += '<span id="pg' + page + '" class="pg-normal" onclick="' + pagerName + '.showPage(' + page + ');">' + page + '</span>  ';
        pagerHtml += '<span onclick="'+pagerName+'.next();" class="pg-normal pgnright"> Next &#187;</span>';            

        element.innerHTML = pagerHtml;
    }
}

I'm using that as a pagination script on a page I'm trying to make.

<script type="text/javascript"><!--
    var pager = new Pager('results', 2); 
    pager.init(); 
    pager.showPageNav('pager', 'pageNavPosition'); 
    pager.showPage(2);
//--></script>

I have 5 tables in one page that is uses the first script so I tried putting the script above at the end of each table. When I do that, the paginations shows up and works but the pg-selected does not work. Is there anything I'm doing wrong? I also do this:

<script type="text/javascript"><!--
    var pager2 = new Pager('results2', 2); 
    pager2.init(); 
    pager2.showPageNav('pager2', 'pageNavPosition2'); 
    pager2.showPage(2);
//--></script>

at the end of each table, I just replace the table name(results2 to results3, results4...). It looks wrong. Is there anyone there that can explain what I'm doing wrong?

The problem is that your script generates elements with IDs. IDs are supposed to be unique. When the scripts calls document.getElementById('pg'+this.currentPage); , it will get the first element in the DOM with this ID, not the one that logaically belongs to the pagination instance. Use classes instead.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM