/**
* 创建实例的的方法
* @param {Object} Class
* @param {Object} params
*/
var newObj = function (Class,params){
function _new (){
if(Class._new){
Class._new.call(this,params);//改变this指向
}
}
_new.prototype = Class;
return new _new();
}
/**
* page对象
*/
var page = {
/**
* 构造函数
* @param {Object} pageSize :一页显示多少条
* @param {Object} dataTotalCount :总共数据条数
* @param {Object} mode : 分页模式 (1:不显示页数,只显示上一页下一页;2:待续);
* @param {Object} pageItem :一页显示多少条目页
* @param {Object} pageContainer :容器
* @param {Function} selfReqFun : 自定义请求函数
*/
_new : function(options){
var pageItem = options.pageItem;
var pageContainer = options.pageContainer;
var selfReqFun = options.selfReqFun;
/**
* 初始化page属性
*/
this.pageNo = options.pageNo;
this.pageSize = options.pageSize;
this.dataTotalCount = options.dataTotalCount;
this.mode = options.mode;
this.pageItem = pageItem == ""||pageItem == null ? this.mode = 1 : pageItem;
this.pageContainer = pageContainer == "" || pageContainer == null ? (function (){
var container = document.createElement("div");
container.id = "pages";
container.style.textAlign = "center";
container.align = "center";
document.getElementsByTagName("body")[0].appendChild(container);
return container;
})() : pageContainer;
this.pageCount = Math.ceil(this.dataTotalCount/this.pageSize);
this.selfReqFun = selfReqFun == null ? function(){} : selfReqFun;
this.itemStyle = options.itemStyle;
this.selfArgs = options.selfArgs;
},
/**
* 注册事件
* @param {Object} target
* @param {Object} eventName
* @param {Object} handler
* @param {Object} args
*/
attachEvent : function (target,eventName,handler,args){
var eventHandler = handler;
if(args){
eventHandler = function(e){
handler.call(args,e);
}
}
if(window.attachEvent){
target.attachEvent("on" + eventName, eventHandler );
} else{
target.addEventListener(eventName, eventHandler, true);
}
},
/**
* 检查pageNo是否合法
* @param {Object} pageNo
*/
checkPageNo : function(pageNo){
if(pageNo == "" || pageNo == null || pageNo < 1) pageNo = 1;
if(pageNo > this.pageCount)pageNo = this.pageCount;
return pageNo;
},
/**
* 创建分页条目
* @param {Object} pageNo
*/
createPageTab : function(){
var flag = false;
//动态添加属性
this.pageNo = this.checkPageNo(arguments[0]||1);
var html = '';
if(this.mode == 1){
html += '<span title="首页" class="firstPage pageSpan reqSpan" id="first"><<</span>';
html += '<span title="上一页" class="prevPage pageSpan reqSpan" id="prev"> < </span>';
html += '<span class="pageNo" id = '+this.pageNo+'>'+this.pageNo+'/'+this.pageCount+'</span>';
html += '<span title="下一页" class="nextPage pageSpan reqSpan" id="next"> > </span>';
html += '<span title="末页" class="lastPage pageSpan reqSpan" id="last">>></span>';
}
this.pageContainer.innerHTML = html;
if(this.itemStyle){
var itemStyle = this.itemStyle;
for(var i in itemStyle){
//判断对象是否为空
flag = true;
}
if (flag) {
var first = document.getElementById("first");
var prev = document.getElementById("prev");
var next = document.getElementById("next");
var last = document.getElementById("last");
first.innerHTML = "<img src="+ itemStyle.firstImg +" style='width:14px;height:14px;cursor:pointer;vertical-align:middle;'/>";
prev.innerHTML = "<img src="+ itemStyle.prevImg +" style='width:14px;height:14px;cursor:pointer;vertical-align:middle;'/>"
next.innerHTML = "<img src="+ itemStyle.nextImg +" style='width:14px;height:14px;cursor:pointer;vertical-align:middle;'/>"
last.innerHTML = "<img src="+ itemStyle.lastImg +" style='width:14px;height:14px;cursor:pointer;vertical-align:middle;'/>"
}
}
/**
* 注册点击事件
*/
var reqSpans = this.pageContainer.getElementsByTagName("span");
for(var j = 0 ; j < reqSpans.length ; j++){
var _this = reqSpans[j];
_this.style.cursor="pointer";
if((_this.className || _this.getAttribute("class")).indexOf("reqSpan") > 0){
this.attachEvent(_this,"click",this.requestEvent,this);
}
}
},
/**
* 请求函数
* @param {Object} pageNo
* @param {Object} id
*/
requestEvent : function(e){
var target = e.srcElement || e.target;
if(target.nodeName.toLowerCase() === "img"){
target = target.parentNode;
}
var id = target.id;
var pageNo = this.pageNo
pageNo = (id === "first")? 1 :
(id === "prev" && pageNo >= 1) ? this.checkPageNo(pageNo-1):
(id === "next" && pageNo <= this.pageCount) ? this.checkPageNo(pageNo+1):
(id === "last")? this.pageCount : 1;
this.selfReqFun(pageNo);
}
}
******************调用方法***********************
/**
* 创建page对象所需的属性
*/
var pageOptions = {
pageNo: 0,
pageSize: 3,
dataTotalCount: 0,//总共有多少条数据(主要针对前台分页,如果后台已经分好,则不需此属性)
mode: 1,//以怎样的方式显示分页样式
pageItem: null,//可选(如果mode不为1 这用到此属性:表示分页区一次显示多少页码)
pageContainer: null,//页面显示区域
selfReqFun: tab2Req,//请求函数(一般只需传入pageNo参数即可)
selfArgs: {},//自定义请求函数的参数
/*
* 自定义分页区页码显示样式
*/
itemStyle: {
//页码自定义样式(可选)
firstImg: "images/first.png",
prevImg: "images/prev.png",
nextImg: "images/next.png",
lastImg: "images/last.png"
}
};
newObj(page, pageOptions).createPageTab(pageNo);//简单一句话ok!
详细解决方案
javascript 分页兑现 分页样式可自定义
热度:100 发布时间:2012-07-03 13:37:43.0
相关解决方案
- javascript ie6兼容的有关问题
- javascript window open在ie中设立不起作用,求解决
- 不走"<script type='text/javascript'>"标签咋回事
- <script type="javascript/text">的有关问题
- 用servlet+jsp+javascript+jdbc做个简单的办公自动化系统流程,该如何解决
- javaScript = == ===区别,该怎么解决
- javascript 怎么验证name=xx.xx的radio表单
- javascript,该怎么处理
- javascript,该如何处理
- javascript 选中文字 但是保存样式 标签
- 新人求问,J2EE方向,html,css,javascript,vml要学到什么程度?解决思路
- javascript 请求servlet兑现将函数中定义的变量作为参数
- javascript 不懂,该如何处理
- javascript 不懂解决方法
- JavaScript 大局函数求实例,高分求
- javaScript 里面 如何知道Object 对象的长度
- javascript 中文本框中数字如何比较
- javascript IE通过,火狐,google浏览器不过解决思路
- Chrome Javascript Click 事件,该如何解决
- javascript 绑定服务器控件 事件,该如何解决
- javascript 经过加密压缩 怎么解压缩
- JavaScript 怎么获取Table中的某个<span> 的值
- javascript 正则表达式 请用小写字母和数目字,首字母必须为字母,长度5-15
- JavaScript 请问一个思路有关问题,当按下鼠标左键,在屏幕上滑动时,会触发什么事件
- javascript 正则Replace,该怎么处理
- javascript 可以实现登录按钮的功能吗?解决办法
- JavaScript 哈希表赋值的有关问题
- JavaScript 除法,希望得到整数解决思路
- 怎么遍历页面中所有div javascript ?
- javascript 函数有关问题