zoukankan      html  css  js  c++  java
  • javascript同步分页

    目前网上分页的例子比较多,但是对其原理不是很了解,平时用的时候只是拿来调用,今天花了点时间,采用面向对象方式写了一个demo。对其方法做了封装,对外只提供一个调用接口。

    window.loadPage = function(obj,data){
      var p = new Pagation(obj,data);
    p.showPageHtml(); }

     根据后台传送的数据,实现同步分页功能。具体代码如下:

    /**
     * 同步分页
     */
    (function(window){
    	function Pagation(obj,data){
    		this.obj = obj;
    		this.dataArr = data;
    		this.currPage = 1;
    		this.pageSize = 10;//一页显示多少条数据
    		this.totalData = this.dataArr.length;
    		this.totalPage = Math.ceil(this.totalData/this.pageSize);
    	}
    	
    	/**
    	 * 根据页码跳转
    	 * @param {Object} pageNo
    	 */
    	Pagation.prototype.gotoPage = function(pageNo){
    		this.currPage = pageNo;
    		this.showPageData();
    	}
    	
    	/**
    	 * 显示分页基本架构
    	 */
    	Pagation.prototype.showPageHtml = function(){
    		var start = (this.currPage - 1) * this.pageSize;
    		var end = this.currPage * this.pageSize;
    		var _this = this;
    		var html = "<div class='pageHeader'><a class='firstPage' href='javascript:void(0)'>首页</a>  <a class='prevPage' href='javascript:void(0)'>上一页</a>  <span class='pageNoList'></span><a class='nextPage' href='javascript:void(0)'>下一页</a>  <a class='lastPage' href='javascript:void(0)'>尾页</a></div>";
    		
    		html+="<div class='pageContent'></div><div class='pageFoot'>共<span class='totalPage'></span>页,当前第<span class='currPage'></span>页,共<span class='totalData'></span>条数据</div>";
    		
    		$(_this.obj).html(html);
    		
    		//首页
    		$(_this.obj).find(".firstPage").click(function(){
    			_this.gotoPage(1);
    		});
    		
    		//尾页
    		$(_this.obj).find(".lastPage").click(function(){
    			_this.gotoPage(_this.totalPage);
    		});
    		
    		//上一页
    		$(_this.obj).find(".prevPage").click(function(){
    			if(_this.currPage > 1) {
    				_this.gotoPage(_this.currPage - 1);
    			}
    		});
    		
    		//下一页
    		$(_this.obj).find(".nextPage").click(function(){
    			if(_this.currPage < _this.totalPage) {
    				_this.gotoPage(_this.currPage + 1);
    			}
    		});
    		
    		this.showPageData();
    	}
    	
    	/**
    	 * 显示分页数据
    	 */
    	Pagation.prototype.showPageData = function(){
    		var start = (this.currPage - 1) * this.pageSize;
    		var end = this.currPage * this.pageSize;
    		var html = "";
    		
    		for(var i = start; i < end; i++) {
    			var data = this.dataArr;
    			
    			if(data[i]) {
    				html+= '<p>'+data[i]+'</p>';
    			}
    		}
    		
    		this.pageNoList();
    		$(this.obj).find(".pageContent").html(html);
    		$(this.obj).find(".totalPage").html(this.totalPage);
    		$(this.obj).find(".currPage").html(this.currPage);
    		$(this.obj).find(".totalData").html(this.totalData);
    	}
    	
    	/**
    	 * 显示页码
    	 */
    	Pagation.prototype.pageNoList = function(){
    		var _this = this;
    		var html = "";
    		var endCount = this.currPage + 2;
    		
    		if(endCount > this.totalPage) {
    			endCount = this.totalPage;
    		}
    		
    		var startCount = this.currPage - 2;
    		
    		if(startCount <= 0) {
    			startCount = 1;
    		}
    		
    		for(var i = startCount; i <= endCount;i++) {
    			if(this.currPage == i) {
    				html+='<span>'+i+'</span>  ';
    			} else {
    				html+="<a class='pageNo' href='javascript:void(0)'>"+i+"</a>  ";
    			}
    		}
    		
    		$(this.obj).find(".pageNoList").html(html);
    		
    		$(this.obj).find(".pageNoList").find(".pageNo").each(function(){
    			$(this).click(function(){
    				_this.gotoPage(parseInt($(this).html()));
    			});
    		});
    	}
    	
    	/**
    	 * 将接口共享出去
    	 * @param {Object} obj
    	 * @param {Object} data
    	 */
    	window.loadPage = function(obj,data){
    		var p = new Pagation(obj,data);
    	    p.showPageHtml();
    	}
    
    })(window);
    
    
    $(function(){
    	var demoData = [];
    	
    	for(var i = 1; i<= 200; i++) {
    		demoData.push(i);
    	}
    	
    	loadPage($("#pagation"),demoData);
    });
    

      代码数据只是个demo,具体数据显示,可以根据自身的数据格式显示,可以是json格式。

  • 相关阅读:
    React中条件渲染
    React 中this.setStat是批量执行的, 它发现做三次是多余的,所以只执行一次
    React 修改获取state中的值
    POJ3417 Network (树上差分)
    POJ3349 Snowflake Snow Snowflakes(Hash)
    Codeforces Round #630 (Div. 2) C. K-Complete Word(字符串)
    Codeforces Round #630 (Div. 2) B. Composite Coloring(数论)
    Codeforces Round #630 (Div. 2) A. Exercising Walk(水题)
    Codeforces Round #629 (Div. 3)/1328 E.Tree Queries(LCA)
    洛谷P5836 [USACO19DEC]Milk Visits S(LCA/并查集)
  • 原文地址:https://www.cnblogs.com/gaoyubao/p/8477926.html
Copyright © 2011-2022 走看看