一、分页算法
< script>
< ! -- 分页的逻辑算法-- >
var nowPage= 10 ;
var totlePage= 20 ;
var navEle= null ;
var up= null ;
var down= null ;
var totle= null ;
var go= null ;
var num= null ;
var lilist= null ;
window. onload = function ( ) {
navEle= document. getElementsByClassName ( "nav" ) [ 0 ] ;
up= document. getElementsByClassName ( "goup" ) [ 0 ] ;
down= document. getElementsByClassName ( "godown" ) [ 0 ] ;
totle= document. getElementsByClassName ( "totle" ) [ 0 ] ;
go= document. getElementsByClassName ( "go" ) [ 0 ] ;
num= document. getElementsByClassName ( "num" ) [ 0 ] ;
lilist= document. getElementsByClassName ( "nav-tab" ) ;
renderPage ( ) ;
totle. innerText= totlePage;
up. onclick = function ( ) {
if ( nowPage<= 1 ) {
return ;
}
nowPage-- ;
renderPage ( ) ;
}
down. onclick = function ( ) {
if ( nowPage>= totlePage) {
return ;
}
nowPage++ ;
renderPage ( ) ;
}
go. onclick = function ( ) {
var value= num. value;
if ( ! value. length) {
alert ( "请输入值!" ) ;
}
else {
nowPage= parseInt ( value) ;
renderPage ( ) ;
}
}
num. value= "" ;
}
function createPage ( currentPage, totle ) {
var str= "" ;
for ( var i= 1 ; i<= totle; i++ ) {
if ( i== 2 && currentPage- i> 2 ) {
i= currentPage- 3 ;
str+= "<li>...</li>"
}
else if ( i- currentPage> 2 && i+ 3 < totlePage) {
i= totlePage- 2 ;
str+= "<li>...</li>" ;
}
else {
if ( i=== currentPage) {
str+= "<li class='nav-tab ck'>" + i+ "</li>"
}
else {
str+= "<li class='nav-tab'>" + i+ "</li>" ;
}
}
}
return str;
}
function renderPage ( ) {
navEle. innerHTML= createPage ( nowPage, totlePage) ;
addHandle ( ) ;
}
function addHandle ( ) {
for ( var i= 0 ; i< lilist. length; i++ ) {
lilist[ i] . onclick = function ( ) {
nowPage= parseInt ( this . innerText) ;
renderPage ( ) ;
}
}
}
< / script>
二、百度分页算法
< script>
var nowPage= 1 ;
var totlePage= 30 ;
var save= null ;
var item= document. getElementsByClassName ( "item-li" ) ;
var up= document. getElementsByClassName ( "up" ) [ 0 ] ;
var down= document. getElementsByClassName ( "down" ) [ 0 ] ;
window. onload = function ( ) {
changeStatus ( ) ;
up. onclick = function ( ) {
if ( nowPage<= 1 ) {
return ;
}
nowPage-- ;
changeStatus ( - 1 ) ;
}
down. onclick = function ( ) {
if ( nowPage>= totlePage) {
return ;
}
nowPage++ ;
changeStatus ( 1 ) ;
}
}
function changeStatus ( params ) {
if ( params> 0 && nowPage> item. length/ 2 + 1 && nowPage+ ( item. length/ 2 - 1 ) <= totlePage) {
updateText ( params) ;
}
if ( params< 0 && nowPage>= item. length/ 2 + 1 && nowPage+ ( item. length/ 2 - 1 ) < totlePage) {
updateText ( params) ;
}
for ( var i= 0 ; i< item. length; i++ ) {
var page= parseInt ( item[ i] . innerText) ;
if ( page=== nowPage) {
if ( save) {
save. classList. remove ( 'check-item' ) ;
}
item[ i] . classList. add ( 'check-item' ) ;
save= item[ i] ;
}
}
}
function updateText ( args ) {
for ( var i= 0 ; i< item. length; i++ ) {
item[ i] . innerText= parseInt ( item[ i] . innerText) + args;
}
}
< / script>
三、带数据的分页算法
< script>
var clist = document. getElementsByClassName ( "c-list" ) [ 0 ] ;
var up = document. getElementsByClassName ( "up" ) [ 0 ] ;
var down = document. getElementsByClassName ( "down" ) [ 0 ] ;
var item = document. getElementsByClassName ( "item-li" ) ;
var lastpage = document. getElementsByClassName ( "lastpage" ) [ 0 ] ;
var firstpage = document. getElementsByClassName ( "firstpage" ) [ 0 ] ;
var gobtn = document. getElementsByClassName ( "gobtn" ) [ 0 ] ;
var menulist = document. getElementById ( "checkinfo" ) ;
var gonum = document. getElementById ( "gonum" ) ;
var save= null ;
var pageData = null ;
var nowpage= 1 ;
var pageNum= 5 ;
var totlepage= setTotle ( ) ;
window. onload = function ( ) {
pageData= getPageData ( ) ;
renderPage ( ) ;
changeStatus ( ) ;
up. onclick = function ( ) {
if ( nowpage<= 1 ) {
return ;
}
nowpage-- ;
changeStatus ( - 1 ) ;
pageData= getPageData ( ) ;
renderPage ( ) ;
}
down. onclick = function ( ) {
if ( nowpage>= totlepage) {
return ;
}
nowpage++ ;
changeStatus ( 1 ) ;
pageData= getPageData ( ) ;
renderPage ( ) ;
}
lastpage. onclick = function ( ) {
nowpage= totlepage;
gopage ( nowpage- parseInt ( item[ item. length- 1 ] . innerText) ) ;
}
firstpage. onclick = function ( ) {
nowpage= 1 ;
gopage ( - ( parseInt ( item[ 0 ] . innerText- 1 ) ) ) ;
}
menulist. onchange = function ( ) {
pageNum = this . value;
console. log ( pageNum) ;
totlepage = setTotle ( ) ;
pageData = getPageData ( ) ;
renderPage ( ) ;
}
for ( var i= 0 ; i< item. length; i++ ) {
item[ i] . onclick = function ( ) {
nowpage= parseInt ( this . innerText) ;
var centerNum= item[ 5 ] . innerText;
var num= nowpage- centerNum;
updateText ( num) ;
changeStatus ( ) ;
pageData = getPageData ( ) ;
renderPage ( ) ;
}
}
gobtn. onclick = function ( ) {
nowpage= parseInt ( gonum. value) ;
var centerNum= item[ 5 ] . innerText;
var num= nowpage- centerNum;
updateText ( num) ;
changeStatus ( ) ;
pageData = getPageData ( ) ;
renderPage ( ) ;
gonum. value= "" ;
}
}
function setTotle ( ) {
return Math. ceil ( stulist. length/ pageNum) ;
}
function getPageData ( ) {
return stulist. slice ( ( nowpage- 1 ) * pageNum, nowpage* pageNum) ;
}
function renderPage ( ) {
var str= "" ;
for ( var index in pageData) {
var one= pageData[ index] ;
str+= "<div><span>" + one. name+ "</span>" + "<span>" + one. sex+ "</span>" + "<span>" + one. age+ "</span>" + "<span>" + one. tel+ "</span>" + "<span>" + one. address+ "</span>" + "<span>" + one. des+ "</span></div>" ;
}
clist. innerHTML= str;
}
function changeStatus ( params ) {
if ( params> 0 ) {
updateText ( params) ;
}
if ( params< 0 ) {
updateText ( params) ;
}
for ( var i= 0 ; i< item. length; i++ ) {
var page= parseInt ( item[ i] . innerText) ;
if ( page=== nowpage) {
if ( save) {
save. classList. remove ( 'check-item' ) ;
}
item[ i] . classList. add ( 'check-item' ) ;
save= item[ i] ;
}
}
}
function updateText ( args ) {
for ( var i= 0 ; i< item. length; i++ ) {
item[ i] . innerText= ( nowpage<= item. length/ 2 + 1 ? ( i+ 1 ) : nowpage< totlepage- 4 ? ( parseInt ( item[ i] . innerText) + args) : ( totlepage- item. length+ 1 + i) ) ;
}
}
function gopage ( args ) {
updateText ( args) ;
changeStatus ( ) ;
pageData= getPageData ( ) ;
renderPage ( ) ;
}
< / script>