`
JavaSam
  • 浏览: 951737 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

javascript 分页实现 分页样式可自定义

 
阅读更多
/**
* 创建实例的的方法
* @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">&nbsp;&nbsp;<&nbsp;</span>';
				html += '<span class="pageNo" id = '+this.pageNo+'>'+this.pageNo+'/'+this.pageCount+'</span>';
				html += '<span title="下一页" class="nextPage pageSpan reqSpan" id="next">&nbsp;>&nbsp;&nbsp;</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自定义分页样式.docx

    JavaScript自定义分页样式是网页开发中常见的需求,特别是在数据量较大时,为了提供良好的用户体验,需要将数据分页展示。本示例中,我们通过JavaScript实现了一个简单的自定义分页功能,它允许用户根据需求调整每页...

    accss, mysql asp通用分页自定义分页样式

    这里的"accss,mysql,asp通用分页,自定义分页样式"就是一个关于如何在ASP(Active Server Pages)环境下,结合Access和MySQL数据库实现分页功能,并且自定义分页样式的主题。 首先,让我们从数据库层面理解。...

    自定义分页控件的实例演示WEB版

    在网页开发中,分页控件是不可或缺的一部分,特别是在数据量较大的情况下,为了提高用户体验,我们需要将大量数据分批次展示,这就是分页的功能。本文将详细介绍如何创建一个自定义的分页控件,并通过Web版实例进行...

    最简单的GridView自定义分页

    2. 客户端分页:如果数据量较小,或者希望减少服务器负载,可以使用JavaScript或jQuery实现客户端分页,通过AJAX请求获取指定页的数据并更新GridView。 四、自定义分页实现步骤 1. 创建数据源:首先,你需要一个...

    自定义页面分页标签自定义页面分页标签

    自定义页面分页标签是指开发者根据项目需求,创建个性化的分页组件,以实现更加灵活、符合界面设计风格的分页功能。下面将详细探讨如何实现自定义页面分页标签及其相关的知识点。 1. **基础概念**: - 分页:将...

    自定义分页标签自定义分页标签

    "自定义分页标签111.rar"和"自定义分页标签"可能是不同版本或样式的分页标签实现。解压并研究这些文件,可以帮助我们更好地理解和应用自定义分页标签技术。 总的来说,自定义分页标签是一个集前端UI设计、交互逻辑...

    swiper自定义分页器——时间轴

    在本文中,我们将深入探讨如何使用Swiper这个流行的JavaScript滑动插件来自定义分页器,特别是将其设计成时间轴的样式。Swiper是一个强大的触摸滑动库,广泛应用于网页和移动应用中,用于创建幻灯片、产品滑块和其他...

    多种javascript实现的分页样式

    "多种JavaScript实现的分页样式"这个主题聚焦于如何利用JavaScript技术来创建各种各样的分页效果,以满足不同网站设计的需求。 JavaScript是一种强大的客户端脚本语言,它允许开发者在不刷新整个页面的情况下动态...

    PHP分页类,样式可以自定义、支持javascript分页、各种框架使用均可配置

    PHP分页类,样式可以自定义、支持javascript分页、各种框架使用均可配置 $pageNo = isset($_REQUEST['pageNo']) ? intval($_REQUEST['pageNo']) : 1; $paginator = new paginator(18, 2, $pageNo); $paginator-&gt;...

    自己做的自定义分页控件

    - **源代码**:JavaScript或TypeScript文件,实现了分页逻辑。 - **样式文件**:CSS或SCSS文件,定义了分页控件的外观。 - **示例**:HTML或JSX文件,展示了如何在实际项目中使用这个控件。 - **文档**:可能包括...

    ASP自定义分页效果

    - **分页样式**:可以使用CSS和JavaScript来美化分页导航,使其符合网站整体风格。 综上所述,ASP自定义分页效果的实现涉及到数据库操作、页面逻辑处理以及前端展示等多个环节。通过合理的代码设计和优化,可以在...

    js分页javascript分页

    2. Pagination.js:一个独立的JavaScript分页库,支持自定义分页样式,支持Ajax请求数据。 3. vue-paginate:针对Vue.js框架的分页组件,易用且高度可定制。 4. react-pagination:适用于React应用的分页组件,可与...

    jquery动态表格自定义分页.zip

    综上所述,这个项目展示了如何使用jQuery、CSS和Ajax技术实现一个动态表格分页功能,允许用户在不刷新页面的情况下浏览大量数据,同时提供了自定义的分页样式。通过学习这些技术,开发者可以提高网页的用户体验和...

    页面布局和自定义分页展示

    Bootstrap框架,作为一个流行的前端开发工具,提供了强大的页面布局解决方案和优雅的分页样式,让开发者能够快速构建响应式且用户友好的网站。本篇文章将深入探讨如何利用Bootstrap来实现高效、美观的页面布局以及...

    一个非常精巧的javascript实现的Bootstrap分页插件

    这个“一个非常精巧的javascript实现的Bootstrap分页插件”提供了无需依赖其他第三方类库的解决方案,使得开发者能够更轻松地在项目中集成分页功能。 首先,我们要理解什么是Bootstrap。Bootstrap是由Twitter推出的...

    自定义分页控件和Table表格,附源码

    本实例提供了一个自定义分页控件和多表头处理的Table表格的实现,帮助开发者更好地理解和运用这些技术。 首先,让我们深入探讨自定义控件。在.NET框架中,自定义控件允许开发者根据特定需求扩展或创建新的用户界面...

    GridView自定义分页可拖动列宽

    本篇将深入探讨如何实现GridView的自定义分页功能以及允许用户通过拖动列宽来调整列的大小。 1. **自定义分页**: 自定义分页是为了提高应用性能,减少不必要的数据查询,只加载当前页所需的数据。默认情况下,...

    swiper自定义分页器使用示例

    - CSS样式:定义自定义分页器的外观。 - JavaScript初始化:设置Swiper实例,并指定分页器的配置。 - 事件处理:根据Swiper的当前状态更新分页器的状态。 5. **代码注释** 代码注释是理解示例的关键,它会解释...

    自定义分页控件

    9. **用户交互**:实现点击页码按钮的功能,这通常通过JavaScript或jQuery在客户端处理,或者通过服务器端的事件处理程序处理。 10. **测试与调试**:最后,确保在不同场景下,如数据量变化、页面跳转等,分页控件...

Global site tag (gtag.js) - Google Analytics