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

저는 이것을 페이지의 페이지 매김 스크립트로 사용하고 있습니다.한 페이지에 여러 페이지 매김 스크립트가 있습니다.

첫 번째 스크립트를 사용하는 한 페이지에 5 개의 테이블이 있으므로 각 테이블의 끝에 스크립트를 넣으려고했습니다. 그렇게하면 페이지 매김이 나타나고 작동하지만 pg-selected가 작동하지 않습니다. 내가 잘못하고있는 것이 있습니까? 나는이 수행 각 테이블의 끝에

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

을, 난 그냥 (... results3, results4에 results2) 테이블 이름을 바꿉니다. 그것은 틀리게 보인다. 내가 잘못하고있는 것을 설명 할 수있는 사람이 있습니까?

+1

문제는 스크립트가 ** ID **를 사용하여 요소를 생성한다는 것입니다. ID는 고유해야합니다. 스크립트가'document.getElementById ('pg'+ this.currentPage);'를 호출하면이 ID로 DOM의 첫 번째 요소를 가져 오며 논리적으로 페이지 매김 인스턴스에 속한 요소는 가져 오지 않습니다. 클래스를 대신 사용하십시오. –

+0

@FelixKling. 정말 고맙습니다! 문제 해결에 시간이 걸렸지 만 이것이 올바른 방향으로 나를 이끌었습니다. 신분증에 문제가있어. 다시 고마워! – Adrengski

답변

0

문제는 스크립트가 ID를 가진 요소를 생성하는 것입니다. ID는 고유해야합니다. 스크립트가 document.getElementById('pg'+this.currentPage);을 호출하면이 ID로 DOM의 첫 번째 요소를 가져 오며 논리적으로 페이지 매김 인스턴스에 속한 요소는 가져 오지 않습니다. 클래스를 대신 사용하십시오.

관련 문제