2012-01-14 17 views
0
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; 
    } 
} 

私はこれをページ上のページ作成スクリプトとして使用しています。1ページに複数のページ分割スクリプトがあります

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

私は各テーブルの最後に上記のスクリプトを入れてみましたので、最初のスクリプトを使用して1ページに5つのテーブルを有しています。私がそれをすると、ページが表示され、動作しますが、pg-selectedは機能しません。私が間違っていることは何ですか? (... results3にresults2、results4)私は、テーブル名を置き換え、各テーブルの最後に

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

:私もこれを行います。それは間違っています。私が間違っていることを説明できる人はいますか?

+1

問題は、スクリプトが** ID **の要素を生成することです。 IDは一意であると考えられます。スクリプトが 'document.getElementById( 'pg' + this.currentPage);'を呼び出すと、このIDを持つDOMの最初の要素を取得します。論理的にページングインスタンスに属する要素は取得しません。代わりにクラスを使用してください。 –

+0

@FelixKling。どうもありがとうございます!私は何かを考え出すのに1時間かかりましたが、これは私を正しい方法に導きました。私はIDに間違っていた。再度、感謝します! – Adrengski

答えて

0

問題は、スクリプトがIDを持つ要素を生成することです。 IDは一意であると考えられます。スクリプトがdocument.getElementById('pg'+this.currentPage);を呼び出すと、このIDを持つDOMの最初の要素を取得し、論理的にページングインスタンスに属する要素は取得しません。代わりにクラスを使用してください。

関連する問題