目前网上分页的例子比较多,但是对其原理不是很了解,平时用的时候只是拿来调用,今天花了点时间,采用面向对象方式写了一个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. 数据库复习总结(17)-T-Sql编程

    T-SQL(SQL SERVER) 百度百科:(即 Transact-SQL,是 SQL 在 Microsoft SQL Server 上的增强版,它是用来让应用程序与 SQL Server 沟通的主 ...

  2. JAVA异步加回调的例子

    package com.sunchao.callback; /** * callback interface * @author Administrator * */ public interface ...

  3. 更改sql多条数据,更新替换字符串中固定的字符串

    需求产生的背景: 数据库里建库时插入了字典数据,可是这个字典数据,有一些是不准确的,所以就需要把一些固定的数据查出来替换掉. 问题解决逻辑: 大体逻辑是,首先把固定需要替换的字符串提取出来,赋值给变量 ...

  4. 2018/1/27 每日一学 最长不降序子序列的O(n*logn)算法

    手动维护一个数组模拟即可,233-- 可以使用algorithm中的lower_bound(相当于二分) 代码如下: #include<cstdio> #include<algori ...

  5. 一次__libc_message的排查

     信号是6,abort调用的.总体而言,当你malloc的指针为A,但是你free的指针不是A,则容易出这个错,当然假设你free的刚好是别人malloc的,则还是正常. 还有一种是你free的地址在 ...

  6. scrapy_简介页面和详情页面

    如何对提取的URL进行限定? 往上找id和class属性值,进行多次层级选择,进行内容限定 如何实现获取主页所有urls,然后交给scrapy下载后并解析详情页面,返回结果?(文章简介页面和文章详细页 ...

  7. Django 中 makemigrations、migrate时 No changes detected

    Django创建的项目中,需要更改.增加.删除表中的某些属性,性急直接把之前数据库表删除了,之后再执行: python manage.py makemigrations python manage.p ...

  8. Servlet--HttpServletRequest一些不常用的方法

    我们在使用Servlet和表单进行交互的时候,不管是传参和接参经常要写一些路径.关于具体的Servlet的传参和接参我后面会有详细的整理,这里先整理一下不怎么常用的到一些HttpServletRequ ...

  9. mysql数据库在windows下安装与配置

      mysql是一种开源源代码的关系型数据库系统(RDBMS),使用最常用的数据库管理语言--结构化查询语句(SQL)进行数据库管理. MySQL是开放源代码的,因此任何人都可以在General Pu ...

  10. C#中的out参数/ref参数/params可变参数

    out参数: out关键字 通过引用来传递参数,在定义方法和调用方法的时候都必须使用out关键字 简单来讲out可以用来返回多个参数类型. static void Main(string[] args ...