anfil89 Posted June 25, 2012 at 07:37 PM Report Share #465462 Posted June 25, 2012 at 07:37 PM (edited) Boas, eu queria fazer paginação em páginas de uma aplicação que estou a desenvolver e tirei o seguinte código da net: 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 = '<span onclick="' + pagerName + '.prev();" class="pg-ctrl"> « </span>'; for (var page = 1; page <= 3; page++) pagerHtml += '<span id="pg' + page + '" class="pg-normal" onclick="' + pagerName + '.showPage(' + page + ');">' + page + '</span>'; pagerHtml += '<span onclick="' + pagerName + '.next();" class="pg-ctrl"> »</span>'; element.innerHTML = pagerHtml; } } Mas há um problema, aparecem todas as páginas na view (< 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 >), eu queria que só aparece-se cerca de 2 antes e 2 depois da página actual, e depois a primeira e a ultima (Primeira < ... 8 9 10 11 12 ... > Ultima) . Que alterações tenho que fazer no código para ficar como eu quero? Obrigado, anfil89 Edited June 25, 2012 at 09:44 PM by brunoais passei pelo http://jsbeautifier.org/ Link to comment Share on other sites More sharing options...
pikax Posted June 25, 2012 at 07:43 PM Report Share #465464 Posted June 25, 2012 at 07:43 PM listo de fazer Copy&Paste tem destes problemas, as variaveis tens que ter atencao sao from e to. Um conselho que te dou e' que tenta perceber o codigo Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast." Link to comment Share on other sites More sharing options...
yoda Posted June 26, 2012 at 04:37 AM Report Share #465556 Posted June 26, 2012 at 04:37 AM (edited) O código que tens supostamente só devia apresentar 3 páginas na navegação, desrespeitando a quantidade de páginas. Edited June 26, 2012 at 04:37 AM by yoda before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now