- 浏览: 747870 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
梦行Monxin商城系统:
java网上商城与php网上商城比较 -
梦行Monxin商城系统:
java网上商城与php网上商城比较 -
任楚娴:
你好,请问html = nvl(html); 这句中的nvl( ...
java html串转换成文本串 -
u013246812:
,谢拉!
jQuery ui Dialog 讲解参数 -
大宝剑99:
...
前端优化
有些情况 界面一次性加载完所有数据,table 列表的形式展示:
对于这样的情况有时候需要用js将这些数据进行分页显示。
下面的js实现的就是纯js 分页条。
/**
* 纯js端分页导航条
* @verson v2.0
* @param {} tableId 数据grid table id
* @param {} pageIndex 前页码
* @param {} navPagerObjName 此对象在页面上的变量全名
* @param {} pageSize 每页显示的记录条数
* @param {} pagerId 显示分页条的 div 或者 span id
*/
function NavPager(tableId,pagerId,navPagerObjName,pageSize,rangeSize){
this.pageIndex = 1;
this.pageSize = pageSize | 10;
this.rangeSize = rangeSize | 3;
this.pageCount = 0;
this.tableId = tableId;
this.pagerId = pagerId;
this.navPagerObjName = navPagerObjName ;
this.tableObj = document.getElementById(this.tableId);//tablegrid object
var tmp = this.tableObj.getElementsByTagName("tbody");
this.pageBarClass = "pageBar";//css
this.rowcss = "row";
this.rowcss_0 = this.rowcss + "0";
this.rowcss_1 = this.rowcss + "1";
if(!tmp || tmp.length<1){
return;
}
if(isNaN(this.pageSize) || this.pageSize < 1){
this.pageSize = 10;
}
this.oldBody = tmp[0];//table tbody object
var rows = this.oldBody.getElementsByTagName("tr");// tr rows
this.dataRows = [];
for(var i=0,count=rows.length;i<count;i++){
this.dataRows[i] = rows[i].cloneNode(1);
}
this.rowCount = this.dataRows.length;
if(this.rowCount <=this.pageSize){
$("#" + pagerId).hide();
return;
}
this.pageCount = parseInt((this.rowCount + 1) /this.pageSize);
if(isNaN(this.curPage) || this.curPage < 1){
this.curPage = 1;
}
this.updateTableRows();
}
/**
* 更新表格数据以及分页导航条
*/
NavPager.prototype.updateTableRows = function(){
var start = (this.pageIndex -1) * this.pageSize;
var end = start + this.pageSize -1;
if(end >= this.rowCount){
end = this.rowCount -1;
}
var tmpRows = this.cloneDataRows();
this.tableObj.removeChild(this.oldBody);
var newBody = document.createElement("tbody");
for(var i=start;i<=end;i++){
var row = tmpRows[i];
$(row).removeClass(this.rowcss_0);
$(row).removeClass(this.rowcss_1);
$(row).addClass(this.rowcss + (i % 2));
newBody.appendChild(row);
}
this.oldBody = newBody;
this.tableObj.appendChild(newBody);
var preHtml = this.getPreBar();
var lastHtml = this.getpostBar();
var html = "<table style='width:100%;' border='0px'><tr><td align='left'>";
html += preHtml;
html += "</td><td align='right'>";
html += lastHtml;
html += "</td></tr></table>";
$("#" + this.pagerId).html(html);
$("#" + this.pagerId).show();
}
/**
* 跳转到指定的页
*/
NavPager.prototype.numberPage = function(curPage){
this.pageIndex = curPage;
if((this.pageIndex - 1) * this.pageSize > this.rowCount){
this.pageIndex = 1;
}
this.updateTableRows();
}
/**
* 获取分页条前部分html内容
*/
NavPager.prototype.getPreBar = function(){
var span = "<span style='width:100%;text-align:left;margin-left:2px;'>";
span += this.pageIndex + "/" + this.pageCount + "页 " ;
var start = ( this.pageIndex -1 ) * this.pageSize + 1;
var end = start + this.pageSize -1;
if(end > this.rowCount){
end = this.rowCount;
}
span += "显示从" + start +"到" + end + "条 共" + this.rowCount + "条 ";
span += "</span>";
return span;
}
/**
* 获取分页条后部分html内容
*/
NavPager.prototype.getpostBar = function(){
var span = "<span style='width:100%;text-align:right;margin-left:2px;'>";
span +="<a href='javascript:void(0);' onclick='" + this.navPagerObjName + ".numberPage(" + 1 + ")' >首页</a> ";
var front = this.pageIndex - this.rangeSize;
var back = this.pageIndex + this.rangeSize;
var buf = "";
// 如果当前页是5,前面一截就是234,后面一截就是678
if (this.pageCount > 1) {
var tempBack = this.pageCount;
var tempFront = 1;
if (back < this.pageCount){
tempBack = back;
}
if (front > 1){
tempFront = front;
}
if(tempFront > 1){
buf += "... ";
}
for (var i = tempFront; i <= tempBack; i++) {
if (this.pageIndex == i) {
var str = "<font color = 'red'>" + i + "</font> ";
buf += str;
} else {
buf +="<a href='javascript:void(0);' onclick='" + this.navPagerObjName + ".numberPage(" + i + ")' >" + i +"</a> ";
}
}
if(tempBack < this.pageCount){
buf += "... ";
}
}
span += buf ;
span +="<a href='javascript:void(0);' onclick='" + this.navPagerObjName + ".numberPage(" + this.pageCount + ")' >尾页</a> ";
span += "</span>";
return span;
}
/**
* 克隆数据
* @returns {Array}
*/
NavPager.prototype.cloneDataRows = function(){
var rows = [];
for(var i=0,count=this.dataRows.length;i<count;i++){
rows[i] = this.dataRows[i].cloneNode(1);
}
return rows;
}
对于这样的情况有时候需要用js将这些数据进行分页显示。
下面的js实现的就是纯js 分页条。
/**
* 纯js端分页导航条
* @verson v2.0
* @param {} tableId 数据grid table id
* @param {} pageIndex 前页码
* @param {} navPagerObjName 此对象在页面上的变量全名
* @param {} pageSize 每页显示的记录条数
* @param {} pagerId 显示分页条的 div 或者 span id
*/
function NavPager(tableId,pagerId,navPagerObjName,pageSize,rangeSize){
this.pageIndex = 1;
this.pageSize = pageSize | 10;
this.rangeSize = rangeSize | 3;
this.pageCount = 0;
this.tableId = tableId;
this.pagerId = pagerId;
this.navPagerObjName = navPagerObjName ;
this.tableObj = document.getElementById(this.tableId);//tablegrid object
var tmp = this.tableObj.getElementsByTagName("tbody");
this.pageBarClass = "pageBar";//css
this.rowcss = "row";
this.rowcss_0 = this.rowcss + "0";
this.rowcss_1 = this.rowcss + "1";
if(!tmp || tmp.length<1){
return;
}
if(isNaN(this.pageSize) || this.pageSize < 1){
this.pageSize = 10;
}
this.oldBody = tmp[0];//table tbody object
var rows = this.oldBody.getElementsByTagName("tr");// tr rows
this.dataRows = [];
for(var i=0,count=rows.length;i<count;i++){
this.dataRows[i] = rows[i].cloneNode(1);
}
this.rowCount = this.dataRows.length;
if(this.rowCount <=this.pageSize){
$("#" + pagerId).hide();
return;
}
this.pageCount = parseInt((this.rowCount + 1) /this.pageSize);
if(isNaN(this.curPage) || this.curPage < 1){
this.curPage = 1;
}
this.updateTableRows();
}
/**
* 更新表格数据以及分页导航条
*/
NavPager.prototype.updateTableRows = function(){
var start = (this.pageIndex -1) * this.pageSize;
var end = start + this.pageSize -1;
if(end >= this.rowCount){
end = this.rowCount -1;
}
var tmpRows = this.cloneDataRows();
this.tableObj.removeChild(this.oldBody);
var newBody = document.createElement("tbody");
for(var i=start;i<=end;i++){
var row = tmpRows[i];
$(row).removeClass(this.rowcss_0);
$(row).removeClass(this.rowcss_1);
$(row).addClass(this.rowcss + (i % 2));
newBody.appendChild(row);
}
this.oldBody = newBody;
this.tableObj.appendChild(newBody);
var preHtml = this.getPreBar();
var lastHtml = this.getpostBar();
var html = "<table style='width:100%;' border='0px'><tr><td align='left'>";
html += preHtml;
html += "</td><td align='right'>";
html += lastHtml;
html += "</td></tr></table>";
$("#" + this.pagerId).html(html);
$("#" + this.pagerId).show();
}
/**
* 跳转到指定的页
*/
NavPager.prototype.numberPage = function(curPage){
this.pageIndex = curPage;
if((this.pageIndex - 1) * this.pageSize > this.rowCount){
this.pageIndex = 1;
}
this.updateTableRows();
}
/**
* 获取分页条前部分html内容
*/
NavPager.prototype.getPreBar = function(){
var span = "<span style='width:100%;text-align:left;margin-left:2px;'>";
span += this.pageIndex + "/" + this.pageCount + "页 " ;
var start = ( this.pageIndex -1 ) * this.pageSize + 1;
var end = start + this.pageSize -1;
if(end > this.rowCount){
end = this.rowCount;
}
span += "显示从" + start +"到" + end + "条 共" + this.rowCount + "条 ";
span += "</span>";
return span;
}
/**
* 获取分页条后部分html内容
*/
NavPager.prototype.getpostBar = function(){
var span = "<span style='width:100%;text-align:right;margin-left:2px;'>";
span +="<a href='javascript:void(0);' onclick='" + this.navPagerObjName + ".numberPage(" + 1 + ")' >首页</a> ";
var front = this.pageIndex - this.rangeSize;
var back = this.pageIndex + this.rangeSize;
var buf = "";
// 如果当前页是5,前面一截就是234,后面一截就是678
if (this.pageCount > 1) {
var tempBack = this.pageCount;
var tempFront = 1;
if (back < this.pageCount){
tempBack = back;
}
if (front > 1){
tempFront = front;
}
if(tempFront > 1){
buf += "... ";
}
for (var i = tempFront; i <= tempBack; i++) {
if (this.pageIndex == i) {
var str = "<font color = 'red'>" + i + "</font> ";
buf += str;
} else {
buf +="<a href='javascript:void(0);' onclick='" + this.navPagerObjName + ".numberPage(" + i + ")' >" + i +"</a> ";
}
}
if(tempBack < this.pageCount){
buf += "... ";
}
}
span += buf ;
span +="<a href='javascript:void(0);' onclick='" + this.navPagerObjName + ".numberPage(" + this.pageCount + ")' >尾页</a> ";
span += "</span>";
return span;
}
/**
* 克隆数据
* @returns {Array}
*/
NavPager.prototype.cloneDataRows = function(){
var rows = [];
for(var i=0,count=this.dataRows.length;i<count;i++){
rows[i] = this.dataRows[i].cloneNode(1);
}
return rows;
}
- demo.rar (49.5 KB)
- 下载次数: 47
发表评论
-
全国最新行政区划代码(Tree)json数据以及地理数据
2020-11-11 21:23 382基于阿里提供的地理数据 http://datav.aliyun ... -
小知识点--解锁 AppChecker ping ip
2019-06-19 08:40 442在使用AppChecker 进行主动拨测的时候,目 ... -
记录年会小系统
2018-02-04 14:42 1144有点意思,年会过后,抽奖活动saas小系统扒光看看:支持P ... -
jdbc方式以 sys账号连接oracle数据的问题
2017-08-22 10:44 484多年以后,在操作oracle 时 发现 jdbc 连 ... -
proguard 代码混淆
2016-11-22 10:59 692url:http://proguard.sourceforg ... -
solr 表达式意义
2015-02-03 19:29 7791. “:”指定字段查指定值,如返回所有值*:* 2. “? ... -
solr 安装配置
2015-02-03 13:15 747solr 安装配置步骤: 1 首先下载solr(最新 ... -
javax.net.ssl.SSLKeyException: RSA premaster secre临时解决方案
2014-11-25 19:38 4420javax.net.ssl.SSLKeyException ... -
compass 小知识点
2014-09-15 10:22 940今天发现排序不管事, 查了一下:索引的问题:排序的列不进 ... -
java_opts 常用
2014-08-14 13:16 1221JVM设置,可以查考如下配置example:# Memory ... -
RPC Socket 服务调用模型
2014-04-09 16:14 602最近在看Dubbo 服务框架, 通过RPC 实现了输入和 ... -
JVM 基本参数
2014-04-03 11:49 789基本的JVM参数:-classpath, -cp: 设置类搜 ... -
eclipse 快捷键失效解决方法
2014-01-17 17:20 722有时候eclispe快捷键失效了,编码起来太难受了。 ... -
Compass+ lucene 通用代码(脱离数据库)
2013-11-08 15:09 920最近需要通过检索分类的方式进行处理,所以就写了接口与实 ... -
DEBUG远程tomcat
2013-08-21 13:35 1003一、在windows系统中:打开%CATALINE_H ... -
自动获取网页内容,然后写入excel文档中
2013-07-05 15:22 3451今天需要将北京物业公司名称以及电话给整理出来,发现爱帮 ... -
继续学习jersey+spring 构建RESTful风格 webservice
2013-03-13 10:36 3462j先说一下springmvc rest风格 spring ... -
尽量少使用jaxb 进行xml与对象互换
2013-03-09 17:33 1354尽量少使用jaxb 进行xml与对象互换 问题不少,这个好 ... -
Cookie path的设置
2013-02-21 10:58 1952cookie path 设置 IE对如下的co ... -
http 相关知识点
2012-10-11 10:49 1066Host头域 Host头域指定请求资源的Intenet主机和 ...
相关推荐
本教程将深入探讨如何使用AngularJS实现一个功能完备的分页导航条。 一、AngularJS基础知识 AngularJS的核心特性包括数据绑定、依赖注入、指令系统、过滤器等。在分页导航中,我们将主要利用数据绑定和指令来实现...
根据提供的文件信息,本文将详细解释如何通过使用CSS中的`display`属性与`position`属性来构建一个炫酷且实用的下拉菜单式分页导航条。此外,还将简要介绍部分VBScript代码的作用,这部分代码用于实现后端逻辑,如...
总的来说,这个“分页导航通用类和js”项目提供了一种实现客户端分页的方法,结合jQuery,可以方便地在各种Web应用中实现高效且灵活的分页功能。通过理解和应用这些技术,开发者可以优化用户体验,提高网页加载速度...
5. **JavaScript和jQuery的使用**:虽然标题未明确提及jQuery,但考虑到`js`目录的存在,这些分页导航条很可能使用了JavaScript或者jQuery来处理用户交互,如点击事件、页面切换效果等。 6. **响应式布局**:每个...
"京东页面JS效果实现,js实现导航条控制"这个主题聚焦于如何使用JavaScript来创建类似京东网站的导航条交互效果。下面将详细介绍这个知识点,并提供一个具体的实例——"360buyleftmenu_jb51net"。 1. **JavaScript...
2. **分页导航**:创建分页导航栏,包含“上一页”、“下一页”按钮和页码列表。 3. **样式设计**:通过CSS定制分页组件的样式,使其符合网站设计风格。 4. **响应式布局**:确保在不同设备和屏幕尺寸下,分页功能...
这些是分页导航的基本元素,JavaScript会根据当前页码状态判断这些元素是否可用。例如,如果当前是第一页,首页和前页按钮可能会被禁用;如果当前页是最后一页,后页和尾页按钮则会被禁用。 **分页页号**: 通常,...
1. **前端分页**:前端分页主要通过JavaScript(可能使用jQuery或其他库如Vue.js、React等)实现,通常包含页码显示、跳转按钮和每页条数选择。在这个项目中,前端代码可能会根据用户的选择发送Ajax请求到服务器,...
分页通常包含以下几个关键元素:总条数、每页显示条数、当前页数以及分页导航。 二、JavaScript在分页中的作用 JavaScript在分页中主要负责以下任务: 1. 计算总页数:根据数据总数和每页显示的数量来确定。 2. ...
接下来,使用jQuery清空分页导航条的内容,并根据当前页面位置,动态添加首页、上一页、页码链接和下一页、尾页的链接。为了优化用户体验,当前页面的链接将被赋予一个“active”类名,这通常会在CSS中定义特殊的...
2. Pagination.js:一个独立的JavaScript分页库,支持自定义分页样式,支持Ajax请求数据。 3. vue-paginate:针对Vue.js框架的分页组件,易用且高度可定制。 4. react-pagination:适用于React应用的分页组件,可与...
- 生成分页导航条,让用户可以点击不同的页码切换页面。 - 示例代码中也没有完整地展示这部分逻辑,但是可以通过计算总的页数和当前页来生成相应的页码链接。 ### 四、示例代码分析 #### 1. **样式设置** - ...
5. **界面控制**:根据总页数,JavaScript更新分页导航条的状态,比如禁用首尾页按钮、高亮当前页等。 案例中的"MVC真分页.doc"可能包含了关于如何将模型-视图-控制器(MVC)设计模式应用于分页组件的详细说明。MVC...
同时,生成分页导航条,包括“上一页”、“下一页”按钮以及页码选择器。 4. **事件监听**:添加事件监听器,当用户点击分页按钮时,更新当前页数并重新执行数据处理和视图渲染。 5. **优化用户体验**:考虑分页...
- **分页原理**:分页是将大量数据分成若干小块,每次只加载一部分到页面中,用户可以通过页码或导航按钮进行翻页。 - **分页元素**:页码、上一页/下一页按钮、跳转页码输入框、每页显示条数选择等。 2. **数据...
4. **自适应性**:EXTJS的组件通常对各种屏幕尺寸都有很好的适应性,我们的JavaScript分页工具条也需要考虑响应式布局,以适应不同设备的屏幕大小。 总的来说,实现一个仿EXTJS的分页工具条需要对JavaScript DOM...
通过上述步骤,我们可以构建一个灵活、可自定义的JavaScript分页插件,它不仅能满足基本的分页需求,还能根据用户的交互进行指定页的跳转,同时提供丰富的样式定制选项。在实际开发中,这样的插件可以帮助我们高效地...
5. **分页UI**:创建一个分页导航栏,显示页码按钮。根据总数据量和每页显示数量,计算总页数,并动态生成这些按钮。通常还需要“上一页”和“下一页”的链接,以及可能的“跳转到指定页”输入框。 6. **事件监听**...