js中的分页
分页是前端经常会用到的一个非常实用的一个知识点,今天闲来没事,做了一个小demo,虽然样子,比较丑,哈哈哈,但是这是分页的核心思想都在,希望能给某个小伙伴一些启发。可直接复制在编辑器中运行。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
a{
margin:5px;
}
</style>
</head>
<body>
<div id="div1"> </div>
</body>
<script>
//采用组件的写法
page({
id:'div1',
nowNum:10, //当前的页码
allNum:10, //总共的页码
callBack:function(now,all){
alert('当前页:'+now+'总共页:'+all);
}
})
function page(opt){
if(!opt.id)return false; //如果没有传元素,就不向下执行了
var obj = document.getElementById(opt.id);
var nowNum = opt.nowNum || 1; //默认的处理
var allNum = opt.allNum || 5;
var callBack = opt.callBack || function(){};
//首页
if(nowNum>=4&&allNum>=6){
var oA = document.createElement('a');
oA.href = '#1';
oA.innerHTML = '首页';
obj.appendChild(oA);
}
//上一页
if(nowNum>=2){
var oA = document.createElement('a');
oA.href = '#'+(nowNum-1);
oA.innerHTML = '上一页';
obj.appendChild(oA);
}
//当总页数小于等于5页的情况
if(allNum<=5){
for(var i=1;i<=allNum;i++){
var oA = document.createElement('a');
oA.href = '#'+i;
if(nowNum == i){ //当前页的处理
oA.innerHTML = i;
}else{
oA.innerHTML = '[' + i + ']';
}
obj.appendChild(oA);
}
}else{ //当总页数大于5页的情况 for(var i=1;i<=5;i++){
var oA = document.createElement('a');
if(nowNum == 1 || nowNum == 2){ //对当前页是第一页和第二页的时候做一个特殊处理
oA.href = '#'+ i;
if(nowNum == i){
oA.innerHTML = i;
}else{
oA.innerHTML = '[' + i + ']';
}
}else if((allNum-nowNum) == 0 || (allNum-nowNum) == 1){ //最后两个页码做特殊处理
oA.href = '#'+ (allNum-5+i);
if((allNum - nowNum) == 0 && i == 5){ //这一块的逻辑较为复杂
oA.innerHTML = (allNum -5+i);
}else if((allNum - nowNum) == 1 && i == 4){
oA.innerHTML = (allNum -5+i);
}else{
oA.innerHTML = '['+(allNum-5+i)+']';
}
}else{
oA.href = '#'+ (nowNum-3+i);
if(i==3){
oA.innerHTML = (nowNum-3+i);
}else{
oA.innerHTML = '['+(nowNum-3+i)+']';
} }
obj.appendChild(oA);
}
} //下一页
if((allNum-nowNum)>=1){
var oA = document.createElement('a');
oA.href = '#'+(nowNum+1);
oA.innerHTML = '下一页';
obj.appendChild(oA);
}
//尾页
if((allNum-nowNum)>=3 && allNum>=6){
var oA = document.createElement('a');
oA.href = '#'+allNum;
oA.innerHTML = '尾页';
obj.appendChild(oA);
}
//执行回调
callBack(nowNum,allNum);
//添加点击事件
var aA = obj.getElementsByTagName('a');
for(var i=0;i<aA.length;i++){
aA[i].onclick = function(){
var nowNum = parseInt(this.getAttribute('href').substring(1)) //注意这里获取href的时候不要用this.href,因为这样获取到的是一个绝对地址,要用getAttribute
//获取到此刻的页码,重新渲染
obj.innerHTML = ''; //清空
page({
id:opt.id,
nowNum:nowNum,
allNum:allNum,
callBack:callBack
});
return false; //阻止默认事件
}
} }
</script>
</html>
js中的分页的更多相关文章
- asp.net mvc核心、实体框架和simplepagin .js中的分页
下载demo - 516.1 KB , 介绍 这篇文章将解释如何在asp.net mvc核心应用程序中进行分页,目标是enity框架,并使用jquery模板simplepagin .js. 我的一个应 ...
- js实现前端分页页码管理
用JS实现前端分页页码管理,可以很美观的区分页码显示(这也是参考大多数网站的分页页码展示),能够有很好的用户体验,这也是有业务需要就写了一下,还是新手,经验不足,欢迎指出批评! 首先先看效果图: 这是 ...
- JS中也可以使用JSTL和EL标签
//往上滑是调用分页 function Ajax(currPage, pageSize) { // ajax后台交互String currPage,String pageSize var el, Pl ...
- web下c#用jquery.tmpl.min.js插件实现分页查询_yginuo
背景:webform或者mvc下实现插件快速分页 ps:我这里用的mvc开发的,数据库连接.用的ADO.NET实体数据模型 此案例下载地址(内含需要用到的一个插件与数据库):http://downlo ...
- springboot中使用分页,文件上传,jquery的具体步骤(持续更新)
分页: pom.xml 加依赖 <dependency> <groupId>com.github.pagehelper</groupId> <arti ...
- 修改bootstrap-table中的分页样式
使用bootstrap-table时,使用$("")选择器没办法选中下方的分页button按钮,可能跟它是动态生成的有关吧. 最终找到与之对应的js(bootstrap-table ...
- 在angular中利用分页插件进行分页
必需:angular分页js和css 当然还有angular.js 还需要bootstrap的css angular.min.js (下面我直接把插件粘贴上去了,以免有的同学还要去找.是不是很贴 ...
- JS(vue iview)分页解决方案
JS(vue iview)分页解决方案 一.解决思路 使用分页组件 使用组件API使组件自动生成页面数量 调用组件on-change事件的返回值page 将交互获得的数组存在一个数组list中 通过p ...
- 单纯用JS做的分页插件
最近公司需要用到分页插件,由于市面上大多都是jQuery的分页插件,而且项目中有自己的工具类,所以说我在工具类中又添加了不依赖jQuery的分页插件,而且分页插件来说对DOM的操作也不是很多,就是用J ...
随机推荐
- 同时支持Android 和 ios 投屏到电脑的软件,Support Android and ios screen shrare to PC - 希沃授课助手
最近学校由粉笔黑板更换了智慧电子黑板,然后发现了一个好玩的软件. 感谢希沃公司的开发: 希沃授课助手,这是一款同时支持Android 和 ios 投屏和远程控制的. 效果很流畅,非常赞
- 不用第三方软件–一键开关笔记本电脑wifi热点的批处理
笔者有点洁癖啊,很强烈抵制那些辣鸡流氓软件的.用笔记本开个wifi还要装东西,搞不好给我塞一堆东西,我勒个fdkshgkhalsh,. 下面就是集设置密码与开关wifi于一身的bat,这个批处理能简化 ...
- Python 实现二分查找(递归版)
二分查找 为什么使用二分查找: python中的列表,一般取值为遍历这个列表,直到取到你想要的值,但是如果你的列表是一个有着百万元素的列表呢,那样for循环遍历列表就会很慢,可能会循环几十万次,才能找 ...
- v-radio
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- google搜索设置,在新的窗口打开
- 转:SLAM算法解析:抓住视觉SLAM难点,了解技术发展大趋势
SLAM(Simultaneous Localization and Mapping)是业界公认视觉领域空间定位技术的前沿方向,中文译名为“同步定位与地图构建”,它主要用于解决机器人在未知环境运动时的 ...
- 用SQL语句从电脑导入图片到数据库
--创建图片表 CREATE TABLE W_PIC ( ID INT, --编号 WPATH ), --完整路径 PIC ), --图片名称,不带后缀 img image --图片内容 ) --图片 ...
- python学习-50 pickle模块
pickle模块 与json方法是一样的 import pickle dic = {'} print(type(dic)) a = pickle.dumps(dic) print(type(a)) f ...
- MySQL使用中遇到的error
eclipse连接不上数据库 //加载驱动 //oracal.jdbc.drive.Oracle.Driver //com.mysql.jdbc.Driver try { Class.forName( ...
- 关于typecho发布文章后的错位
今天发布了一篇文章,发布后发现,what?主页错位了,安装控制变量法知道,肯定是这篇文章有什么不可告人的秘密. 所以,顺便使用一下二分法查找一下为啥,最后找到是因为使用了---------->( ...