首页 > 编程语言 >JavaScript分页控件 js 分页

JavaScript分页控件 js 分页

时间:2023-04-23 17:40:40浏览次数:48  
标签:控件 PagerView 分页 index self JavaScript pageCount str pager


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 <title>JavaScript分页控件</title>
 <style type="text/css">
 body{
  margin: 0;
  padding: 0;
  font-size: 14px;
  font-family: tahoma, arial;
  background: #fff;
 }
.PagerView{
 color: #333;
 text-align: center;
 margin: 8px;
}
.PagerView span{
 color: #999;
 margin: 0 1px;
 padding: 3px 6px;
 border: 1px solid #ccc;
}
.PagerView span.on{
 color: #333;
 font-weight: bold;
 border: 1px solid #333;
}
.PagerView a{
 color: #00f;
 text-decoration: none;
}
.PagerView a span{
 border: 1px solid #66c;
 color: #33f;
}
.PagerView a:hover span{
 color: #f00;
 background: #ff9;
}
 </style>
<script type="text/javascript">

/**
 *
 * 分页控件, 使用原生的JavaScript代码编写. 重写onclick方法, 获取翻页事件,
 * 可用来向服务器端发起AJAX请求.
 *
 * 示例:
 * HTML:
 * <div id="pager"></div>
 *
 * JavaScript:
 * var pager = new PagerView('pager');
 * pager.index = 3; // 当前是第3页
 * pager.size = 16; // 每页显示16条记录
 * pager.itemCount = 100; // 一共有100条记录
 *
 * pager.onclick = function(index){
 * alert('click on page: ' + index);
 * // display data...
 * pager.render();
 * };
 *
 * pager.render();
 *
 * @param id: HTML节点的id属性值, 控件将显示在该节点中. 可以延迟到render方法调用之前设置.
 */
function PagerView(id){
 var self = this;
 this.id = id;
 this.container = null;
 this.index = 1; // 当前页码, 从1开始
 this.size = 15; // 每页显示记录数
 this.maxButtons = 9; // 显示的分页按钮数量
 this.itemCount = 0; // 记录总数
 this.pageCount = 0; // 总页数
 /**
  * 控件使用者重写本方法, 获取翻页事件, 可用来向服务器端发起AJAX请求.
  * @param index: 被点击的页码.
  */
 this.onclick = function(index){
 };
 /**
  * 内部方法.
  */
 this._onclick = function(index){
  self.index = index;
  self.onclick(index);
  self.render();
 };
 /**
  * 在显示之前计算各种页码变量的值.
  */
 this.calculate = function(){
  self.pageCount = parseInt(Math.ceil(self.itemCount / self.size));
  self.index = parseInt(self.index);
  if(self.index > self.pageCount){
   self.index = self.pageCount;
  }
 };
 /**
  * 渲染分页控件.
  */
 this.render = function(){
  if(self.id != undefined){
   var div = document.getElementById(self.id);
   div.view = self;
   self.container = div;
  }
  self.calculate();
  var start, end;
  start = Math.max(1, self.index - parseInt(self.maxButtons/2));
  end = Math.min(self.pageCount, start + self.maxButtons - 1);
  start = Math.max(1, end - self.maxButtons + 1);
  var str = "";
  str += "<div class=\"PagerView\">\n";
  if(self.pageCount > 1){
   if(self.index != 1){
    str += '<a href="javascript://1"><span>|<</span></a>';
    str += '<a href="javascript://' + (self.index-1) + '"><span><<</span></a>';
   }else{
    str += '<span>|<</span>';
    str += '<span><<</span>';
   }
  }
  for(var i=start; i<=end; i++){
   if(i == this.index){
    str += '<span class="on">' + i + "</span>";
   }else{
    str += '<a href="javascript://' + i + '"><span>' + i + "</span></a>";
   }
  }
  if(self.pageCount > 1){
   if(self.index != self.pageCount){
    str += '<a href="javascript://' + (self.index+1) + '"><span>>></span></a>';
    str += '<a href="javascript://' + self.pageCount + '"><span>>|</span></a>';
   }else{
    str += '<span>>></span>';
    str += '<span>>|</span>';
   }
  }
  str += ' 一共' + self.pageCount + '页, ' + self.itemCount + '条记录 ';
  str += "</div><!-- /.pagerView -->\n";
  self.container.innerHTML = str;
  var a_list = self.container.getElementsByTagName('a');
  for(var i=0; i<a_list.length; i++){
   a_list[i].onclick = function(){
    var index = this.getAttribute('href');
    if(index != undefined && index != ''){
     index = parseInt(index.replace('javascript://', ''));
     self._onclick(index)
    }
    return false;
   };
  }
 };
}

</script>
</head>
<body>
<h1>分页控件PagerView示例</h1>
<div id="pager" style="width: 900px; margin: 20px; padding: 4px; border: 1px solid #999;">
</div>
<div id="info" style="text-align: center; width: 900px; margin: 0 20px; padding: 4px; border: 1px solid #999;">
</div>
<script type="text/javascript">

var pager = new PagerView('pager');
pager.itemCount = 301;
pager.size = 5;
pager.index = 3;
pager.onclick = function(index){
 document.getElementById('info').innerHTML = '现在翻到第' + index + '页';

};
pager.render();

</script>
</body>
</html>

标签:控件,PagerView,分页,index,self,JavaScript,pageCount,str,pager
From: https://blog.51cto.com/u_16085348/6218407

相关文章

  • datepick 同时 显示 两个 日历控件
    <html><head><linkrel="stylesheet"type="text/css"href="jquery-ui-1.8.16.custom.css"/><scriptsrc="jquery-1.6.2.min.js"type="text/javascript"></script><s......
  • JavaScript的swichcase方法
    functionchangeBody(index){switch(index){case1:{document.getElementById('bull').style.display="";document.getElementById('cont').style.display="none";document.getElementById('gridPager'......
  • JavaScript的类型转换(字符转数字,数字转字符)
    在Java中,基本类型之间的强制转换也不是这样的,比如,整数要转换成字符串,必须使用Integer.toString()静态方法或者String.valueOf()静态方法,把字符串转换为整数,必须使用Integer.valueOf()。可见,不能把JavaScript中的类型转换看作为“强制类型转换”。在JavaSc......
  • PageView与数据库 分页
    <?xmlversion="1.0"encoding="UTF-8"?><%@pagelanguage="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%><%@includefile="/inc/incTagLib.jsp"%><%@tagli......
  • Vue 项目安全扫描漏洞,JS 库版本太低,要求升级 YUI(vue2 升级javascript库)【检测到目标站
    原帖:https://blog.csdn.net/u012961419/article/details/130016341背景公司信安部门对项目进行安全扫描,查出一些漏洞,其中有一项要求升级javascript框架库(如图): 吓得我以为让我把Vue2升级成Vue3。经过一番询问后才知道,是工具包中依赖的YUI是存在安全漏洞的版本。漏洞定......
  • JavaScript实现文件上传下载功能实例解析
    ​ 需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制。 第一步:前端修改由于项目使用的是BJUI前端框架,并没有使用框架本身的文件上传控件,而使用的基于jQuery的Uploadify......
  • 【WPF学习】03 控件模板
    查看控件样式具体属性在VirtualStudio中,我们可以通过文档大纲找到具体元素控件,右键选择“编辑模板--编辑副本”可以查看该控件当前的样式具体属性设置,再未对控件自定义样式的时候通过这种方法查看到的即为系统为该控件预设的样式属性由此再注释几个属性:ContentPresenter定......
  • 高级控件
    title:ContentProvider下拉框SpinnerpublicclassSpinnerDropdownActivityextendsAppCompatActivityimplementsAdapterView.OnItemSelectedListener{//定义下拉列表需要显示的文本数组privatefinalstaticString[]starArray={"水星","金星","......
  • javascript
    ele.appendChild(dom对象)向元素添加新的子节点,作为最后一个子节点。ele.attributes 返回元素的属性集合,通过索引访问,.nodeName表示属性名,.nodeValue表示属性值ele.childNodes 返回元素子节点的NodeList(包含文本节点)。ele.children 返回元素子节点(不含文本节点)ele.className 设置......
  • JavaScript奇技淫巧:Hook与反Hook
    JavaScript奇技淫巧:Hook与反Hook作者:专注于JS混淆加密的JShamanAPIHOOK技术,在PC时代曾盛行,是高端的技术。在JavaScript编程中,也可以应用APIHook技术实现不寻常的效果。例,evalhook:<html><script>//备份原window.eval函数var_eval=window.eval;//eval的hook函数window.eva......