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

    Redis的事务功能详解 MULTI.EXEC.DISCARD和WATCH命令是Redis事务功能的基础.Redis事务允许在一次单独的步骤中执行一组命令,并且可以保证如下两个重要事项: >Re ...

  2. F5负载均衡虚拟服务器配置FTP端口访问不了

    F5配置ip映射到地址池ftp服务,访问报错:FTP出现"数据 Socket 错误: 连接被拒""ftp 列表错误"解决办法 1条回答 FTP的vs类型需要选择 ...

  3. python_如何获取文件状态

    案例: 在某项目中,需要获取文件状态,如: 文件的类型(普通文件.目录.符合连接.设备文件) 文件的访问权限 文件最后 访问.修改.节点状态 时间 普通文件大小 -- 如何解决? 方法1:通过os原始 ...

  4. Servlet和web服务器关系

    前面的博客我详细的罗列了下Servlet的常用的类和接口,然后在前面的前面我类似tomcat模拟了一套web服务器,这里来做一个统一的整理,这样子可以更好的把握Servlet,也可以更好的了解下web ...

  5. SQL Server ——动态SQL

    EXECUTE 执行 Transact-SQL 批中的命令字符串.字符串或执行下列模块之一:系统存储过程.用户定义存储过程.标量值用户定义函数或扩展存储过程.SQL Server 2005 扩展了 E ...

  6. 一个ios的各种组件、代码分类,供参考

    http://github.ibireme.com/github/list/ios/#

  7. 【转】shell学习笔记(四)——条件测试

    1 test 条件检测 当我要检测系统上面某些文件或者是相关的属性时,利用 test 这个命令来工作真是好用得不得了, 举例来说,我要检查 /home/oracle/zy是否存在时,使用: test ...

  8. redis数据类型-有序集合

    有序集合类型 在集合类型的基础上有序集合类型为集合中的每个元素都关联了一个分数,这使得我们不仅可以完成插入.删除和判断元素是否存在等集合类型支持的操作,还能够获得分数最高(或最低)的前N个元素.获得指 ...

  9. zabbix监控-自定义监控与报警(二)

    标签: linux 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 1.web界面操用(host groups) 1.1创建一个组名字为damo 1.2配置文件解 ...

  10. Tensorflow ActiveFunction激活函数解析

    Active Function 激活函数 原创文章,请勿转载哦~!! 觉得有用的话,欢迎一起讨论相互学习~Follow Me Tensorflow提供了多种激活函数,在CNN中,人们主要是用tf.nn ...