最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

js实现分页的效果实例

来源:动视网 责编:小采 时间:2020-11-27 19:58:54
文档

js实现分页的效果实例

js实现分页的效果实例:想必大家都用过百度查找过我们想要的信息,每次我们查找东西的时候,百度都会返给我们很多很多相似和有关的结果,而这些结果是不可能一页就显示完全的,一般都会分很多很多页,效果图如下。所以我们今天就是要分享一下,这个分页效果是怎么实现的。首先我们观
推荐度:
导读js实现分页的效果实例:想必大家都用过百度查找过我们想要的信息,每次我们查找东西的时候,百度都会返给我们很多很多相似和有关的结果,而这些结果是不可能一页就显示完全的,一般都会分很多很多页,效果图如下。所以我们今天就是要分享一下,这个分页效果是怎么实现的。首先我们观
 想必大家都用过百度查找过我们想要的信息,每次我们查找东西的时候,百度都会返给我们很多很多相似和有关的结果,而这些结果是不可能一页就显示完全的,一般都会分很多很多页,效果图如下。所以我们今天就是要分享一下,这个分页效果是怎么实现的。

首先我们观察这个分页

  1. 一页中显示的页码数是固定的

  2. 当当期页码大于等于2的时候,开始显示‘上一页’按钮,当总页数比当前显示的页码大于等于1的时候,开始显示'下一页'按钮的按钮

  3. 如果我们想要添加‘首页’和‘尾页’按钮的话,那当首页不能在页面显示的时候,添加‘首页’按钮。如果尾页不能显示在页面的时候添加‘尾页’按钮。

  4. 上面的情况确定之后,就是要进行细分的了,分情况进行讨论。首先我们分两大种情况:当页面显示的页数大于等于总页数的时候以及当页面显示的页数小于总页数的时候两种情况。前一种情况比较简单,就不再细说了,主要是当总页数比页面能显示的页数大的时候还要分三种情况:1、当前页的页码小于等于页面中能显示页数的二分之一时2、当前页为最后的几页的时候,以及除了上面两种情况的其他的情况。

文字描述可能有点难懂,所以接下来我们直接上例子,js中有详细的注释方便理解(首先说明,页面中显示的页数为5,至于有多少页如果在实际项目中应该是通过ajax动态获取数据的,然后根据数据的多少自动获得总页数。为了方便理解这里我是用的模拟数据)

HTML代码:

<ul id="ul1"></ul>
<p id="p1">
 <!--<a href="#1">首页</a>
 <a href="#3">上一页</a>
 <a href="#2">[2]</a>
 <a href="#3">[3]</a>
 <a href="#4">4</a>
 <a href="#5">[5]</a>
 <a href="#6">[6]</a>
 <a href="#5">下一页</a>
 <a href="#10">尾页</a>-->
</p>

注释的部分是我们要通过js动态添加的。

CSS代码:

 <style>
 *{ margin:0; padding:0;}
 li{ list-style:none;}
 #ul1{ width:600px; height:250px;}
 #ul1 li{ width:100px; height:100px; background:red; float:left; overflow:hidden; margin:10px;}
 a{ margin:5px;}
 </style>

js代码:

 var json = {
 title : [
 '效果1',
 '效果2',
 '效果3',
 '效果4',
 '效果5',
 '效果6',
 '效果7',
 '效果8',
 '效果9',
 '效果10',
 '效果11',
 '效果12',
 '效果13',
 '效果14',
 '效果15',
 '效果16',
 '效果17',
 '效果18',
 '效果19',
 '效果20',
 '效果21',
 '效果22',
 '效果23',
 '效果24',
 '效果25',
 '效果26',
 '效果27',
 '效果28',
 '效果29',
 '效果30',
 '效果31',
 '效果32',
 '效果33',
 '效果34',
 '效果35',
 '效果36',
 '效果37',
 '效果38',
 '效果39',
 '效果40',
 '效果41',
 '效果42',
 '效果43',
 '效果44',
 '效果45',
 '效果46',
 '效果47',
 '效果48',
 '效果49',
 '效果50',
 '效果51'
 ]
 };
 var arr=[];
 var iNow = 9;
 page({
 id:'p1',
 nowNum:1,
 allNum:Math.floor(json.title.length/10),
 callBack:function(){alert(0)}
 });

 function page(opt){
 if(!opt.id){
 return false;
 }
 var obj = document.getElementById(opt.id);
 var nowNum = opt.nowNum||1;
 var allNum = opt.allNum||5;
 var callBack = opt.callBack||function(){};
 if(nowNum>=4&&allNum>=6){//首页出现的情况,就是当现在的页码大于等于4并且总页码大于等于6时
 var oA = document.createElement('a');
 oA.href = '#1';
 oA.innerHTML = '首页';
 obj.appendChild(oA);
 }
 if(nowNum>=2){//只要页码大于等于2就会出现上一页
 var oA = document.createElement('a');
 oA.href = '#'+(nowNum - 1);
 oA.innerHTML = '上一页';
 obj.appendChild(oA);
 }
 if(allNum<=5){//因为我们让一页最多显示5个页码,所以,如果总页码小与等于5,就说明页码可以显示完全
 for(var i=1;i<=allNum;i++){
 var oA = document.createElement('a');
 oA.href = '#'+i;
 if(nowNum==i){
 oA.innerHTML = i;
 }else{
 oA.innerHTML = '['+i+']';
 }
 obj.appendChild(oA);
 }
 }
 else{//下面的情况是当总页码大于5的时候进行的分类
 for(var i=1; i<=5;i++){
 var oA = document.createElement('a');
 if(nowNum == 1||nowNum==2){//在总页数大于5的情况下继续根据当前页进行细分。如果当前的页为1或者为2的时候
 oA.href = '#'+i;
 if(nowNum ==i){
 oA.innerHTML = i;
 }else{
 oA.innerHTML = '['+i+']'
 }
 }else if((allNum - nowNum)==0||(allNum - nowNum)==1){//如果当前页为最后一页或者倒数第二页的时候,说明显示的5页即为最后5页,所以就是下面的公式
 oA.href = '#'+(allNum - 5+i);
 if((allNum - nowNum)==0&&i==5){
 oA.innerHTML = (allNum - 5 + i);
 }else if((allNum - nowNum)==1&&i==4){
 oA.innerHTML = (allNum - 5 +i);
 }else{
 oA.innerHTML = '['+(allNum - 5 +i)+']'
 }
 }else{//当前页码处在5个页码的中间的时候
 oA.href = '#'+(nowNum - 3 +i);
 if(i==3){
 oA.innerHTML = (nowNum - 3 + i);
 }else{
 oA.innerHTML = '['+(nowNum - 3 +i)+']'
 }
 }
 obj.appendChild(oA);
 }
 }
 if((allNum - nowNum)>=1){//如果总页数比当前页码大于等于1的时候显示‘下一页’
 var oA = document.createElement('a');
 oA.href = '#'+(nowNum+1);
 oA.innerHTML = '下一页';
 obj.appendChild(oA);
 }
 if((allNum - nowNum)>=3&&allNum>=6){//如果总页数比当前页码大于等于3并且总页码大于等于6的时候显示‘尾页’;
 var oA = document.createElement('a');
 oA.href = '#'+allNum;
 oA.innerHTML = '尾页';
 obj.appendChild(oA);

 }
 callBack(nowNum,allNum);
 var aA = obj.getElementsByTagName('a');
 for(var i=0; i<aA.length;i++){
 aA[i].onclick = function(){
 var nowNum = parseInt(this.getAttribute('href').substring(1));//得到当前的页码数
 obj.innerHTML = '';
 page({
 id : opt.id,
 nowNum : nowNum,
 allNum : allNum,
 callBack : callBack}

 );
 return false;
 }
 }
 }

文档

js实现分页的效果实例

js实现分页的效果实例:想必大家都用过百度查找过我们想要的信息,每次我们查找东西的时候,百度都会返给我们很多很多相似和有关的结果,而这些结果是不可能一页就显示完全的,一般都会分很多很多页,效果图如下。所以我们今天就是要分享一下,这个分页效果是怎么实现的。首先我们观
推荐度:
标签: 实现 js 效果
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top