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"> « 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 »</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.