废话部分

前两天做了一个前台分页插件,支持ajax读取数据绑定前台 和 url带页码参数跳转两种方式。于是稍加改动,做了一个单篇文章js模拟分页的代码,为什么说是模拟分页呢?因为在服务器响应HTML请求的时候,就已经把全文回传给客户端了,只是我们通过js的方式,把全文隐藏,每次翻页至显示出我们需要的那一部分,而不是真正的按需要去发出HTML请求。所以,在做这个插件的时候去掉了ajax请求的功能及其附带参数,去掉了pageSize参数(恒等于1)。这里就不讨论具体的技术细节了和上一篇的分页计算原理大致相同,有兴趣的同学可以移步:http://www.cnblogs.com/webconfig/p/3864350.html,这里不再赘述。

效果图

再来看张完整的

基本思路

当页面中的正文文章部分的下面加载JS,通过指定好的ID,把正文内容保存在 分页对象(全局变量) 的一个属性中,首次加载当前页为1,Load() 方法中只有一个 分页对象的参数,以后每次翻页 Load() 方法中多加一个当前页参数,然后JS 取值 计算 填充容器。

调用方法

引入样式和Jquery和分页插件

 <script src="jquery-1.11.1.min.js"></script>
<script src="ruguoTextPager_1.0.js"></script>
<link rel="stylesheet" type="text/css" href="ruguoPager.css">

HTML结构  con中为正文内容,在需要分页的地方插入我自定义的分页符“ {ruguo:pager} ”,至于如果文中真的要出现这个字符串的话,请转义。

 <div class="con" id="con">
<p>段落1</p>{ruguo:pager}
<p>段落1</p>
<p>段落1</p>{ruguo:pager}
<p>段落1</p>
</div>
<div class="ruguoPager_red" id="pager"></div>

JS 初始化  实例化对象 pager,给对象需要自定义的属性赋值,不赋值的等于默认值,最后调用方法,对象作为实参传进去即可。

 <script>
var pager = new ruguoPager();
pager.objName="pager";
pager.pagerID="pager";
pager.txtID="con";
pager.toPoint="con"
pager.showPageCount=3;
pager.currPage=1;
ruguoPagerLoad(pager);
</script>

参数列表(参数名  默认值  含义  可选值  是否必须)

sig="{ruguo:pager}",   //分页符 string
objName="", //对象名 string
pagerID="", //分页容器ID string 必须
txtID="", //正文容器ID string 必须
currPage=1, //当前页 int
itemCount=0, //总分段(页)数 无需定义,历史遗留问题
showPageCount="3"; //页面显示数量 int
toPoint="", //点击返回锚点名称 string
contents="", //正文内容,一般情况下无需定义 isShowFirstPage="always", //是否显示首页 always,auto,none
isShowPreviousPage="always", //是否显示上一页 always,auto,none
isShowNextPage="always", //是否显示下一页 always,auto,none
isShowLastPage="always", //是否显示尾页 always,auto,none
isShowPages="always", //是否显示页码 always,auto_0,auto_1,none
isShowAll="always", //是否显示全文 always,auto,none
isShowGo="always" //是否显示跳转 always,auto,none

总结

通过编写这段代码学到了一些新东西,总结如下:

1,在JS中,replace一次只能替换第一个,若想替换所有需要用正则表达式或者用循环。

2,在JS中,split() 方法不仅适用于字符分割,同样适用于字符串。

3,在JS中,判断一个变量是否是数字类型,可以使用isNaN(),返回值为true代表不是数字。

4,本人才疏学浅,写代码纯属业余兴趣爱好,还望跟各位大神多多学习,存在的问题或者是更好的解决方案,还请不吝赐教,帮助我完善插件,网上成熟的插件有很多,本人献丑不敢说分享劳动成果工,只能说在学习中遇到的问题拿来给暂时还没有遇到的人,少走一些弯路,同时满足一下自己小小的成就感,仅此而已。

代码与文章都是博主辛苦一点一点码出来的,请尊重博主辛勤劳动,欢迎转载,转载请注明出处,更多交流请关注 D调码农的笔记簿 http://www.cnblogs.com/webconfig

相关文档下载

下载地址:http://files.cnblogs.com/webconfig/ruguoTextPager.rar

--------------------------------------分割线--------------------------------------------

【2015年4月24日更新】

增加当页数为1页时,自动隐藏分页。

相关文档下载

下载地址:http://files.cnblogs.com/files/webconfig/ruguoTextPager_2015.4.24%E6%9B%B4%E6%96%B0.rar

单篇文章JS模拟分页的更多相关文章

  1. js对文章内容进行分页示例代码

    这篇文章主要介绍了使用js对文章内容进行分页的具体实现,需要的朋友可以参考下 Thinkphp中文章显示代码: 代码如下: <div id="showContent"> ...

  2. Vue+Mock.js模拟登录和表格的增删改查

    有三类人不适合此篇文章: "喜欢站在道德制高点的圣母婊" -- 适合去教堂 "无理取闹的键盘侠" -- 国际新闻版块欢迎你去 "有一定基础但又喜欢逼逼 ...

  3. 原生JS实现分页效果2.0(新增了上一页和下一页,添加当前元素样式)

    虽然写的很烂,但至少全部都是自己写的,因为这个没有固定的顺序,所以就没有封装,如果你技术好的话,可以你写的分享给我,谢谢. <!DOCTYPE html><html lang=&qu ...

  4. 原生JS实现分页效果1.0

    不太完整,写的太急,等等加上完整注释,写起来还是有些难度的,写的有点水,后面再改进改进. <!DOCTYPE html><html lang="en">&l ...

  5. Gremlins.js – 模拟用户随机操作的 JS 测试库

    Gremlins.js 是基于 JavaScript 编写的 Monkey 测试库,支持 Node.js 平台和浏览器中使用.Gremlins.js 随机模拟用户操作:单击窗口中的任意位置,在表格中输 ...

  6. node.js模拟qq漂流瓶

    (文章是从我的个人主页上粘贴过来的,大家也可以访问我的主页 www.iwangzheng.com) node.js模拟简易漂流瓶,页面有扔瓶子和捡瓶子的功能,一个瓶子只能被捡到一次,阅读完就置状态位, ...

  7. C#设计模式总结 C#设计模式(22)——访问者模式(Vistor Pattern) C#设计模式总结 .NET Core launch.json 简介 利用Bootstrap Paginator插件和knockout.js完成分页功能 图片在线裁剪和图片上传总结 循序渐进学.Net Core Web Api开发系列【2】:利用Swagger调试WebApi

    C#设计模式总结 一. 设计原则 使用设计模式的根本原因是适应变化,提高代码复用率,使软件更具有可维护性和可扩展性.并且,在进行设计的时候,也需要遵循以下几个原则:单一职责原则.开放封闭原则.里氏代替 ...

  8. js模拟抛出球运动

    js练手之模拟水平抛球运动 -匀加速运动 -匀减速运动 模拟运动有些基本的思路,当前所在点的坐标,元素的长宽是多少,向右/向下运动x/y增加,向上/向左运动x/y减少,运动的路程是多少,用什么方程进行 ...

  9. JS 模拟手机页面文件的下拉刷新

    js 模拟手机页面文件的下拉刷新初探 老总说需要这个功能,好吧那就看看相关的东西呗 最后弄出了一个简单的下拉刷新页面的形式,还不算太复杂 查看 demo 要在仿真器下才能看到效果,比如chrome的里 ...

随机推荐

  1. 写给新手看的Flask+uwsgi+Nginx+Ubuntu部署教程

    学习 Flask,写完一个 Flask 应用需要部署的时候,就想着折腾自己的服务器.根据搜索的教程照做,对于原理一知半解,磕磕碰碰,只要运行起来了,谢天谢地然后不再折腾了,到下一次还需要部署时,这样的 ...

  2. python文件处理

    python中对文件处理需要涉及到os模块和shutil模块得到当前工作目录路径:os.getcwd()获取指定目录下的所有文件和目录名:os.listdir(dir)删除文件:os.remove(f ...

  3. Python学习笔记:02数据类型

    Python 数据类型 python中标准的数据类型有 基础类型 整型(长整型) 浮点型 复数型 布尔型 序列类型 字符串 列表 元组 字典 整型 整型和长整型并不严格区分,整型int的表达范围和计算 ...

  4. Aptana Studio 快捷键

    窗口 Ctrl+ Shift +L 调出快捷键提示 Ctrl+ W 关闭当前标签窗口 Ctrl+ Shift + W 关闭当前标签窗口 Ctrl+ F6 (或者是Aptana的Ctrl+Tab )下一 ...

  5. 10:Hello, World!的大小

    总时间限制:  1000ms 内存限制:  65536kB 描述 还记得在上一章里,我们曾经输出过的“Hello, World!”吗? 它虽然不是本章所涉及的基本数据类型的数据,但我们同样可以用siz ...

  6. HDU-1799(组合递推公式)

    HDOJ-1799 - Fighting_Dream M - 暴力求解.打表 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Forma ...

  7. zend framework 1 连接oracle数据库的写法

    1 用Zend_Db_Adapter_Pdo_Oci方式 $config =array( 'host'=>'192.168.5.40', 'port'=>'1521', 'dbname'= ...

  8. Ansible好像很好玩的样子哟

    这个比SALTSTACK轻量,,不知道速度如何..... 参考文档: http://linux.cn/article-4215-1.html wget http://download.fedorapr ...

  9. h.264参考图像列表、解码图像缓存

    1.参考图像列表(reference picture list) 一般来说,h.264会把需要编码的图像分为三种类型:I.P.B,其中的B.P类型的图像由于采用了帧间编码的这种编码方式,而帧间编码又是 ...

  10. linxu安装OSX

    下载OS X Mavericks 10.9 Retail VMware Image安装vmware10.01打开unlock-all-v110,运行install.sh 打开vmx. 更新系统. 安装 ...