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格式。
javascript同步分页的更多相关文章
- 如何实现 javascript “同步”调用 app 代码
在 App 混合开发中,app 层向 js 层提供接口有两种方式,一种是同步接口,一种一异步接口(不清楚什么是同步的请看这里的讨论).为了保证 web 流畅,大部分时候,我们应该使用异步接口,但是某些 ...
- MvcPager使用的Demo(同步分页)
最近接触了一下MvcPager,昂...来做个笔记吧 其实,我喜欢前后端分离,分页这种东西前端负责的地方,后端不用顾问,这里的MvcPager有点让我想起服务器控件,毕竟用到了HtmlHelper. ...
- JavaScript显示分页按钮
/** * 获取分页按钮 * @param total_page 总页数 * @param current_page 当前页 * @param num 每页显示多少个分页按钮 * @returns { ...
- javascript 同步加载与异步加载
HTML 4.01 的script属性 charset: 可选.指定src引入代码的字符集,大多数浏览器忽略该值. defer: boolean, 可选.延迟脚本执行,相当于将script标签放入页面 ...
- 不需要JAVAScript完成分页查询功能
分页查询之前已经说过,现在用另一种方法实现,换汤不换药.但是更简单. view层代码: 控制层代码: 业务逻辑层,主要看一下方法count1()的代码: count1()方法的功能就是控制翻页,如果传 ...
- 纯原生javascript实现分页效果
随着近几年前端行业的迅猛发展,各种层出不穷的新框架,新方法让我们有点眼花缭乱. 最近刚好比较清闲,所以没事准备撸撸前端的根基javascript,纯属练练手,写个分页,顺便跟大家分享一下 functi ...
- [转载]Javascript 同步异步加载详解
http://handyxuefeng.blog.163.com/blog/static/4545217220131125022640/ 本文总结一下浏览器在 javascript 的加载方式. 关键 ...
- PouchDB:JavaScript同步数据库
简介 PouchDB是受 Apache CouchDB启发为Web设计的一款占用空间少的数据库.PouchDB项目的目标是帮助开发者构建线上和线下都能很好地使用的Web应用程序,在应用程序离线的时候, ...
- javascript同步和异步的区别与实现方式
javascript语言是单线程机制.所谓单线程就是按次序执行,执行完一个任务再执行下一个. 对于浏览器来说,也就是无法在渲染页面的同时执行代码. 单线程机制的优点在于实现起来较为简单,运行环境相对简 ...
随机推荐
- Maven打包时去掉项目版本号
Maven打包后,jar或war文件名里带有版本号信息,如projectname0.0.1-SNAPSHOT.jar等,怎么去掉呢? 解决办法: 打开项目pom.xml文件,在<build> ...
- J.U.C atomic AtomicInteger解析
很多情况下我们只是需要简单的,高效,线程安全的递增递减方法.注意,这里有三个条件:简单,意味着程序员尽可能少的底层或者实现起来比较简单:高效,意味着耗用资源要少,程序处理速度要快: 线程安全也非常重要 ...
- git 简单入门
首先了解一下git的是什么: [百度百科解释]Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理.[2] Git 是 Linus Torvalds 为了帮助管理 ...
- apktool给软件加注册机修改图标和文件名
功能实现,即让你的软件具有注册机功能,或者破解别人的软件,据为己有! 先反编译文件包 然后全局工具,修改图标和名称 加注册机,输入key,下载计算器,即可.给某个用户设置自定义的使用时间!
- Django中url使用命名空间的错误
出的错误: 1. Reverse for 'llist' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) ...
- linux相关概念
最近这段时间玩Linux比较多,前面我也转载了好多的相关的Linux指令.这里自己关于Linux概念来自己整理一下. 首先我们应该知道Linux到底是什么? 我们知道Linux这玩意儿是在计算机上面运 ...
- 输入和输出--javase中的路径
就目前为止, javase中经常用到路径来读取一个资源文件的所有情况都已经整理在博客里面了,这里做一个统一的整理: 1,IO流来读取一个文件,比如说new FileInputStream(" ...
- vim 实用配置
修改文件~/.vimrc 如下: set nu " 显示行号colorscheme torte " 设定配色方案set tabstop=4 " 设定 tab 长度为 4s ...
- MS SQL 监控数据/日志文件增长
前几天,在所有数据库服务器部署了监控磁盘空间的存储过程和作业后(MS SQL 监控磁盘空间告警),今天突然收到了两封告警邮件,好吧,存储规划是一方面,但是,是不是要分析一下是什么原因造成磁盘空 ...
- js中的语句
java语句与js的语句一样.1.判断if else/switch <script type=text/javascript> function fun1(){ var num = 10; ...