目前网上分页的例子比较多,但是对其原理不是很了解,平时用的时候只是拿来调用,今天花了点时间,采用面向对象方式写了一个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格式。

javascript同步分页的更多相关文章

  1. 如何实现 javascript “同步”调用 app 代码

    在 App 混合开发中,app 层向 js 层提供接口有两种方式,一种是同步接口,一种一异步接口(不清楚什么是同步的请看这里的讨论).为了保证 web 流畅,大部分时候,我们应该使用异步接口,但是某些 ...

  2. MvcPager使用的Demo(同步分页)

    最近接触了一下MvcPager,昂...来做个笔记吧 其实,我喜欢前后端分离,分页这种东西前端负责的地方,后端不用顾问,这里的MvcPager有点让我想起服务器控件,毕竟用到了HtmlHelper. ...

  3. JavaScript显示分页按钮

    /** * 获取分页按钮 * @param total_page 总页数 * @param current_page 当前页 * @param num 每页显示多少个分页按钮 * @returns { ...

  4. javascript 同步加载与异步加载

    HTML 4.01 的script属性 charset: 可选.指定src引入代码的字符集,大多数浏览器忽略该值. defer: boolean, 可选.延迟脚本执行,相当于将script标签放入页面 ...

  5. 不需要JAVAScript完成分页查询功能

    分页查询之前已经说过,现在用另一种方法实现,换汤不换药.但是更简单. view层代码: 控制层代码: 业务逻辑层,主要看一下方法count1()的代码: count1()方法的功能就是控制翻页,如果传 ...

  6. 纯原生javascript实现分页效果

    随着近几年前端行业的迅猛发展,各种层出不穷的新框架,新方法让我们有点眼花缭乱. 最近刚好比较清闲,所以没事准备撸撸前端的根基javascript,纯属练练手,写个分页,顺便跟大家分享一下 functi ...

  7. [转载]Javascript 同步异步加载详解

    http://handyxuefeng.blog.163.com/blog/static/4545217220131125022640/ 本文总结一下浏览器在 javascript 的加载方式. 关键 ...

  8. PouchDB:JavaScript同步数据库

    简介 PouchDB是受 Apache CouchDB启发为Web设计的一款占用空间少的数据库.PouchDB项目的目标是帮助开发者构建线上和线下都能很好地使用的Web应用程序,在应用程序离线的时候, ...

  9. javascript同步和异步的区别与实现方式

    javascript语言是单线程机制.所谓单线程就是按次序执行,执行完一个任务再执行下一个. 对于浏览器来说,也就是无法在渲染页面的同时执行代码. 单线程机制的优点在于实现起来较为简单,运行环境相对简 ...

随机推荐

  1. maven pom.xml 详细

    一.什么是POM Project Object Model,项目对象模型.通过xml格式保存的pom.xml文件.作用类似ant的build.xml文件,功能更强大.该文件用于管理:源代码.配置文件. ...

  2. Velocity动态拼接字符串

    1.在全局定义一个变量: #set($varName = "") 2.拼接字符串病截取字符串: #foreach( $role in $adminUser.roles) #set( ...

  3. Spring-AOP标签scoped-proxy

    <aop:scoped-proxy/>介绍: Spring的Bean是有scope属性的,表示bean的生存周期.scope的值有prototype.singleton.session.r ...

  4. Altium designer知识总结

    原理图库文件 =原理图元件库 .schlibPCB库文件=封装库.pcblib 集成库=原理图库文件+封装库 .intlib

  5. linkin大话设计模式--模板方法模式

    linkin大话设计模式--模板方法模式 准备一个抽象类,将部分逻辑以具体方法的形式实现,然后申明一些抽象方法来迫使子类实现剩余的逻辑.不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不 ...

  6. CRC检验

    CRC(循环冗余检验码) 基本原理:在K位信息码后面加上R位校验形成N位编码(即CRC码),事先需要约定一个生成多项式G(x),校验码生成过程:将K位信息码向左移动R位然后mol(其实就是按位异或)上 ...

  7. zabbix图形乱码

    毕竟是中文为主,特别是有些香项目最好以中文命名,容易区分,也方便识别 环境: centos7.3安装zabbix3.2 问题: 图文乱码问题 原理上只要找到对应的字符集,在修改配置文件 windows ...

  8. spring boot热部署

    1.pom配置 参考:http://412887952-qq-com.iteye.com/blog/2300313 2.intellij配置 参考:http://blog.csdn.net/wjc47 ...

  9. nongsanli

    之后的内容只能追加,不可以修改,删除. 1.    mysql可以对字段进行MD5加密, 加密插入:INSERT INTO t_user(id,username,PASSWORD) VALUES('5 ...

  10. Django之反向生成url

    首先新建一个项目test_url,项目包含一个名为app01的应用 在urls.py文件中生成如下内容 from django.conf.urls import url from django.sho ...