面向对象版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" & ...
随机推荐
- 自制docker basic image
docker的安装和入门见官网教程:http://docs.docker.com/ 下面是自制docker basic image的步骤,以ubuntu为例. 1. 安装debootstrap apt ...
- Apache开启Proxy代理,实现域名端口转发
今天帮客户迁移网站,客户一个是ASPX的一个是PHP的网站,这时候有2个域名,可是php网站是Apache下的伪静态,必须要用到Apache,但是ASPX网站还必要到IIS+Mssql 然后到了这个时 ...
- [leetcode]_Pascal's Triangle II
题目:Pascal三角的变形,要求只用O(K)的额外空间. 思路:由于Pascal三角中,tri[n][i] = tri[n - 1][i] + tri[n-1][i-1],(通常情况下) 如果已经获 ...
- 由window.history.back()引发的问题
由window.history.back()引发的问题 编写人:CC阿爸 2015-1-30 今天在这里,我想与大家一起分享由windows.history.back()引发的问题,笔者在实际开发当中 ...
- SequoiaDB的数据分区操作
在SequoiaDB集群环境中,用户往往将数据存放在不同的逻辑节点与物理节点中,以达到并行计算的目的. 分区:把包含相同数据的一组数据节点叫一个分区,如上图绿色方块组成三个分区. 分区键:切分时,所依 ...
- android 的通知管理
1在context里定义通知管理器(NotificationManager) NotificationManager notificationManager = (NotificationManage ...
- Laravel 安装predis 扩展
在安装predis扩展之前先安装composer,安装教程在https://getcomposer.org/download/: php -r "copy('https://getcompo ...
- php变量那些事:php引擎对变量声明、存储简要分析(ZVAL)
php中变量有三个基本的特性: 1.变量符号.也就是变量的名称.形象比喻,kv中的key.这个有php引擎的符号表(hash表)管理. 2.变量类型.一个php变量可以是boolean.integer ...
- UITableView去除空白cell上多余separator
具体的效果可以参考微信ios7版的UITableview 它最后一行cell的separator是顶到最左边的 首先设置tableFooterView _messageTableview.tableF ...
- ArrayAdapter的简单使用
1.创建一个类继承ArrayAdapter private class MyAdapter extends ArrayAdapter { LayoutInflater in; Context cont ...