JavaScript EasyPager 分页函数

复制代码 代码如下:

  var EasyPager = function(wrap,pageCount,currPage){

  var d = document

  ,el = function(tag,inner,click,css){

  tag = d.createElement(tag);

  inner && (tag.innerHTML = inner);

  click && (tag.onclick = click);

  css && (tag.className=css);

  return tag;

  }

  ,append = function(parent,children,child){

  children = [].concat(children);

  for(var i=0,j=children.length;i<j;i++){

  child = children[i];

  child && parent.appendChild(child);

  }

  return parent;

  }

  ,easyFn = function(n){return function(){EasyPager(wrap,pageCount,n)}}

  ,box = el("div"),firstPage,prevPage,lastPage,nextPage,startNum,endNum,pages= [];

  currPage!=1 && (firstPage = el("span","<<",easyFn(1)),prevPage = el("span","<",easyFn(currPage-1)));

  currPage!=pageCount && (lastPage = el("span",">>",easyFn(pageCount)),nextPage = el("span",">",easyFn(currPage+1)));

  (pageCount<=10) ? (startNum=1,endNum=pageCount) : (startNum=currPage-4,endNum = currPage+5,(currPage<=5) && (startNum=1,endNum=10),(currPage>=pageCount-5)&&(endNum=pageCount,startNum=pageCount-10+1));

  for(var i=startNum;i<=endNum;i++)pages.push(el("span",i,easyFn(i),i==currPage?"currSpan":null))

  append((wrap.innerHTML="",wrap),append(box,[firstPage,prevPage].concat(pages).concat(nextPage,lastPage)));

  };