面向对象版js分页
基于前一个js分页,我将代码改成一个面向对象版的js分页,代码如下
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
a{
margin: 5px;
}
</style>
<title>分页</title>
<script type="text/javascript">
window.onload=function(){
new page(
{id:'div1',
nowNum:8,
allNum:10,
callback:function(now,all){
alert('当前页:'+now+','+'总共'+all+'页')
}
}
)
} function page(json){
this.json=json; if(!this.json.id){
return false
}
this.obj=null;
this.nowNum=null;
this.allNum=null;
this.callback=null; var _this=this;
this.obj=document.getElementById(this.json.id);
this.nowNum=this.json.nowNum||1;
this.allNum=this.json.allNum||5;
this.callback=this.json.callback||function(){}; if(this.nowNum >3 && this.allNum >5){
var oA=null; this.oA=document.createElement('a');
this.oA.href="#"+1;
this.oA.innerHTML="首页";
this.obj.appendChild(this.oA)
}
if(this.nowNum>1){
var oA=null; this.oA=document.createElement('a');
this.oA.href="#"+(this.nowNum-1);
this.oA.innerHTML="上一页";
this.obj.appendChild(this.oA)
} if(this.allNum<=5){
for(var i=0;i<this.allNum;i++){
var oA=null;
this.oA=document.createElement('a'); this.oA.href='#'+(i+1); if(this.nowNum==i){
this.oA.innerHTML=(i+1);
}else{
this.oA.innerHTML='['+ (i+1) +']';
}
this.obj.appendChild(this.oA); }
}else{ for(var i=1;i<=5;i++){
var oA=null;
this.oA=document.createElement('a'); if(this.nowNum==1||this.nowNum==2){
this.oA.href='#'+i;
this.oA.innerHTML='['+i+']'; if(this.nowNum==i){
this.oA.innerHTML=i
}
}else if((this.allNum - this.nowNum) == 0||(this.allNum - this.nowNum == 1)){ this.oA.href='#'+(this.allNum-5+i);
if(this.allNum - this.nowNum==0 && i==5){
this.oA.innerHTML=(this.allNum-5+i);
}else if(this.allNum - this.nowNum==1 && i==4){
this.oA.innerHTML=(this.allNum-5+i);
}else{
this.oA.innerHTML='['+(this.allNum-5+i)+']';
} }else{
this.oA.href = '#' + (this.nowNum - 3 + i); if(i==3){
this.oA.innerHTML=(this.nowNum-3+i);
}else{
this.oA.innerHTML='['+(this.nowNum-3+i)+']';
} }
this.obj.appendChild(this.oA); }
} if((this.allNum - this.nowNum) > 0){
var oA=null;
this.oA=document.createElement('a');
this.oA.href='#'+(this.nowNum+1);
this.oA.innerHTML = '下一页';
this.obj.appendChild(this.oA);
}
if((this.allNum - this.nowNum)>2){
var oA=null;
this.oA=document.createElement('a');
this.oA.href='#'+this.allNum;
this.oA.innerHTML = '尾页'
this.obj.appendChild(this.oA);
}
this.callback(this.nowNum,this.allNum); var aA=null; this.aA=this.obj.getElementsByTagName('a');
for(var i=0;i<this.aA.length;i++){ var _this=this; this.aA[i].onclick=function(){
_this.change(this);
}; }
}
page.prototype.change=function(btn){ var nowNum=null; this.nowNum = parseInt(btn.getAttribute('href').substring(1)); this.obj.innerHTML=''; new page(
{
id: this.json.id,
nowNum:this.nowNum,
allNum:this.allNum
}
)
}
</script>
</head>
<body>
<div id="div1">
<!-- <a href="#1">1</a>
<a href="#1">2</a>
<a href="#1">3</a>
<a href="#1">4</a>
<a href="#1">5</a> -->
</div>
</body>
</html>
面向对象版js分页的更多相关文章
- Bootstrap的js分页插件属性介绍
Bootstrap Paginator是一款基于Bootstrap的js分页插件,功能很丰富,个人觉得这款插件已经无可挑剔了.它提供了一系列的参数用来支持用户的定 制,提供了公共的方法可随时获得插件状 ...
- 一款基于Bootstrap的js分页插件bootstrap-paginator使用实例
Bootstrap Paginator是一款基于Bootstrap的js分页插件,功能很丰富.它提供了一系列的参数用来支持用户的定制,提供了公共的方法可随时获得插件状态的改变,以及事件来监听用户的动作 ...
- 前端—我的第一篇博客 梦开始的地方(面向对象版tab栏)
这是我的第一篇博客 博客生涯才开始 但是人生已经过去了二十个年头了 才开始弄这个 也没搞得太懂 我原本的想法是想搞个源代码上来 但是看了半天好像就只能传html源代码 那我还有css js的部分呢 我 ...
- js分页小结
今天解决了JS分页的问题1 页码 给每页的内容套一个相同的类名 通过选择器加上.length或者.size() 来获得总页数2当前页的页码可以使用each(function(index,DOMsss ...
- 【面向对象版】HashMap(增删改查)
前言: 关于什么是HashMap,HashMap可以用来做些什么,这些定义类的描述,请参照[简易版]HashMap(增删改查)的内容. 这章节主要是面向实例,直接进行HashMap(增删改查)的演示. ...
- 自己封装的JS分页功能[用于搭配后台使用]
* 2016.7.03 修复bug,优化代码逻辑 * 2016.5.25 修复如果找不到目标对象的错误抛出. * 2016.5.11 修复当实际页数(pageNumber)小于生成的页码间隔数时的bu ...
- jsp、js分页功能的简单总结
一.概述 首先,我们要明确为何需要分页技术,主要原因有以下: 1.分页可以提高客户体验度,适当地选择合适的数据条数,让页面显得更有条理,使得用户体验感良好,避免过多数据的冗余. 2.提高性能的需要.分 ...
- 一个重构的js分页类
// JavaScript Document /**//** * js分页类 * @param iAbsolute 每页显示记录数 * @param sTableId 分页表格属性ID值,为Strin ...
- 面向对象原生js幻灯片代淡出效果
面向对象原生js幻灯片代淡出效果 下面是代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" & ...
随机推荐
- SubsetsTotal Accepted:49746Total Submissions:176257My Submissions
Subsets Total Accepted: 49746 Total Submissions: 176257My Submissions Given a set of distinct intege ...
- C#局域网桌面共享软件制作(二)
链接C#局域网桌面共享软件制作(一) 如果你运行这个软件查看流量监控就会发现1~2M/s左右的上传下载,并且有时会报错“参数无效”,如果你将屏幕截图保存到本地的话每张图片大概4M(bmp).120KB ...
- UML类图常见关系总结
Unified Modeling Language (UML)又称统一建模语言或标准建模语言. 在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realizat ...
- Winfrom 基于TCP的Socket 编程
基于TCP的Socket基础例子 服务端的代码 public partial class Form1 : Form { public Form1() { InitializeComponent(); ...
- ThinkPHP之中的验证码的小示例
ThinkPHP之中已经封装好了验证码的调用,但是关于手册,缺失了HTML之中以及.实际操作之中的点击ajax就会刷新验证码ajax代码:现在分享一下:看客老爷们注意啦! 放大招啦!!!三分归元气-- ...
- Java排序
给出10个数,使用某种排序方法,按照从小到大的顺序输出个个数. 根据要求,首先得给出这10个数,这里的算法需要一个循环,数据结构需要一个长度为10的整型数组.首先用BufferedReader in= ...
- nexcel 读取 excel
procedure TfrmUserV3.ImportUser(const AFileName: string); var book :IXLSWorkBook; ws : IXLSWorkSheet ...
- delphi 类型转化
1.typecasting类型强制转化 var B : Boolean; Begin B := Boolean(1); End; 对于对象和接口,采用as操作符进行转化,但要先进行兼容性判断. 2.P ...
- .Net并行编程
1.什么是线程?线程和进程的区别是什么? 线程是程序执行的最小单元. 区别: 进程是操作系统进行资源处理和分配的最小单位,而一个进程可以包含多个线程,并共享进程的资源. 2.什么是多线程?为什么设计多 ...
- 第一步 django的下载安装
django是python众多web框架中比较有名的一个,以大包大揽功能俱全而著名.但作为重量级的web框架,难免性能上回有所损失,不过由于其封装了各种API,在开发的时候会便利许多.所以也是深受欢迎 ...