// JavaScript prototype(原型对象) function Pagination (total, pageSize, pageCurrent) { this.total = total; this.pageSize = pageSize; this.pageCurrent = pageCurrent; this.page = Math.ceil(this.total/Number(this.pageSize)); // 根据total,pageSize,pageCurrent动态设置分页数,及当前选中项 Pagination.prototype.renderDom = function () { // 分页的HTML let ulHtml = document.querySelector('.pagination'); // 创建 << 节点 let li1 = document.createElement('li'); let a1 = document.createElement('a'); let text1 = document.createTextNode('<<'); a1.appendChild(text1); li1.appendChild(a1); ulHtml.appendChild(li1); a1.setAttribute('class', 'prevDom'); // a1.setAttribute('onclick', 'handlePrevClick()') // 创建 分页页数 节点 for (let i = 0; i < this.page; i++) { let li = document.createElement('li'); let a = document.createElement('a'); let text = document.createTextNode(i+1); a.appendChild(text); li.appendChild(a); ulHtml.appendChild(li); if (i === Number(this.pageCurrent)) { a.setAttribute('class', 'active'); a.setAttribute('onclick', 'handleClick(this)'); // 创建 >> 节点 let li2 = document.createElement('li'); let a2 = document.createElement('a'); let text2 = document.createTextNode('>>'); a2.appendChild(text2); li2.appendChild(a2); ulHtml.appendChild(li2); a2.setAttribute('class', 'lastDom'); // a.setAttribute('onclick', 'handleLastClick()'); // 上一页 Pagination.prototype.prevPage = function () { // 点击上一页,页数减1,若当前页数为1则return let p = Number(this.pageCurrent); if (p === 1 || (p - 1) < 1) { return; if ((p - 1) >= 1) { let _p = p - 1; let aNodeList = document.querySelectorAll('.pagination li a'); for (let i = 0; i < aNodeList.length; i++) { // 若为上一页/下一页元素,不涉及添加active类 if (i === 0 || i === aNodeList.length) { continue; if (aNodeList[i].text == _p) { aNodeList[i].setAttribute('class', 'active'); this.pageCurrent = _p; } else { aNodeList[i].setAttribute('class', ''); // 下一页 Pagination.prototype.lastPage = function () { debugger // 点击上一页,页数减1,若当前页数为1则return let p = Number(this.pageCurrent); if (p === this.page || (p + 1) > this.page) { return; if ((p + 1) <= this.page) { let _p = p + 1; let aNodeList = document.querySelectorAll('.pagination li a'); for (let i = 0; i < aNodeList.length; i++) { // 若为上一页/下一页元素,不涉及添加active类 if (i === 0 || i === aNodeList.length) { continue; if (aNodeList[i].text == _p) { aNodeList[i].setAttribute('class', 'active'); this.pageCurrent = _p; } else { aNodeList[i].setAttribute('class', ''); // 点击分页按钮 Pagination.prototype.clickPage = function (elem) { let _p = Number(this.pageCurrent); if (elem.text == '<<' || elem.text == '>>' || this.text == this.pageCurrent) { return; let aNodeList = document.querySelectorAll('.pagination li a'); for (let i = 0; i < aNodeList.length; i++) { // 若为上一页/下一页元素,不涉及添加active类 if (i === 0 || i === aNodeList.length) { continue; aNodeList[i].setAttribute('class', ''); elem.setAttribute('class', 'active'); this.pageCurrent = elem.text; // 创建分页对象 let pageCons = new Pagination(105, 10, 2); // 根据参数渲染分页列表 pageCons.renderDom(); // 上一页事件 document.querySelector('.pagination a.prevDom').onclick = function () { pageCons.prevPage(); // 下一页事件 document.querySelector('.pagination a.lastDom').onclick = function () { pageCons.lastPage(); // 每页事件 function handleClick (elem) { pageCons.clickPage(elem); Document </ul></div><script> // JavaScript prototype(原型对象) function Pagination (total, pageSize, pageCurrent) { this.total = total; this.pageSize = pageSize; t... function Pagination(_ref) { this.id = _ref.id; //分页组件挂载的 DOM 节点 this.curPage = _ref.curPage || 1; //初始页码 this.draw = _ref.draw; // 初始化分页请求次数 this.pageSize = _ref.pageSize |
在网页开发中, 常常需要一个表格与列表相结合的控件, 即能像表格(table)一样显示丰富的信息, 又能像列表选择控件(select)一样方便地选择数据. 在桌面应用程序开发中, 许多GUI库都提供了类似的控件, 如.Net的ListView. PagerView是一个好看精巧的分页控件. PagerView+TableView为网页开发提供了类似的工具, 但代码更简单, 功能 更紧凑. SelectorView是一个由两个TableView组合而成的控件, 相对于列表选择器, 提供了一个临时的存放已选中项的地方. 更新日志: •2010-01-11, 重新组织文档, 将各个 功能 单独分开介绍, 提供"Getting Started". 使用 jsdoc生成API文档. •2009-10-19, 数据列表 使用 数组保存, 取代原来的哈希, 因为哈希的元素可能是无序的(依赖于浏览器 实现 ). •2009-09-07, 增加TableView的演示. •2009-08-14, 增加演示控件选择 功能 , 可以自定义是否显示某个控件, 如计数, 标题, 过滤, 行选择框, 分页等. •2009-08-13, 加入分页控件PagerView, 实现 TableView的分页 功能 , 通过TableView.display.pager(bool类型)来控制. PagerView是一个独立的控件, 使用 原生的JavaScript代码编写. •2009-08-01, 加入模糊过滤控件, 通过TableView.display.filter(bool类型)来控制. •2009-07-29, 优化, 在关键点 使用 原生的 DOM 接口替代jQuery. •2009-07-29, 加入元素数量和当前已标记行数量的统计. •2009-07-29, 增加TableView.delRange方法. 修改SelectorView.select和SelectorView.unselect方法, 应用TableView.addRange和TableView.delRange方法. •2009-07-28, 增加TableView.addRange方法, 用于添加数据集合, 解决性能问题. •2009-07-24, 取消TableView.refresh方法, 修改TableView.add方法, 添加和删除行会立即自动刷新界面. 增加良好注释. •2009-07-23, SelectorView增加双击选择或者取消选择的 功能 . •2009-07-23, 高亮显示被选中的行.
//以下将以jquery.ajax为例,演示一个异步分页 $.getJSON('test/demo1.json', {curr: 6}, function(res){ //从第6页开始请求。返回的json格式可以任意定义 laypage({ cont: 'page1', //容器。值支持id名、原生 dom 对象,jquery对象。【如该容器为】:<div id=page1></div> pages: res.p * @param {*} currentPage 当前点击的页码 * @param {*} pagenum 总页码 * @param {*} selectorLength 中间显示多少个 * @param {*} dom Id 需要渲染的 dom 的Id function createPageSelector(currentPage,pagenum,selectorLength, dom Id){ //添加样式后打印时一页只打印一个div中内容,一页打印不下的内容会在下一页中继续打印,当一个div内容结束后不管该页剩余空白多少都会跳至下页打印下一个div内容( 实现 WORD分页效果) <div class="div1" style="page-break-after: always;"> <div class="div2" style="page-
laypage - 多 功能 JavaScript分页组件v1.3 更新日志: 1. 修复当pages(总页数)为0时,仍然输出了【下一页】的bug 2. 修复当不满足出现分页条件时,抛出了Cannot read property 'children' of null的bug 3. 将首页和尾页默认用汉字标识,而非数字。 laypage - 多 功能 JavaScript分页组件简介 laypage是一款多 功能 的js分页组件,主要应用于前端页面Ajax普通分页以及信息流加载,并且可无缝迁移至Node.js平台。laypage不依赖于任何第三方库,直接拿来用即可,它的接口继承了layui系列组件的一贯简洁,极易上手。那么,从现在开始,将分页的任务交给laypage吧! 直接 使用 laypage({ cont: 'page1', //容器。值支持id名、原生 dom 对象,jquery对象。【如该容器为】: pages: 66, //总页数 curr: 6, //当前页 jump: function(e){ //触发分页后的回调 var view = document.getElementById('view1'); //你也可以直接 使用 jquery view[removed] = '假设这是分页内容,目前正出于第:' e.curr '页。jump函数返回的参数e是一个object,e.curr即当前页,通过它去向服务端请求相关数据。' var laypage = require('laypage'); laypage({ cont: 'id', pages: 11,  laypage - 多 功能 JavaScript分页组件页面展示:
今天用 DOM 实现 了增删改和分页在这里与大家分享由于时间问题仿百度分页还没有 实现 请大家等待。 &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;addUser.html&lt;/title&gt;
前两天看一个视频聊天时才知道的reduce这个数组的方法,简单看了一下别人写的觉得 使用 这个方法渲染数据挺不错的,于是自己就写了一个小 DOM 玩玩。 先给大家简单说说数组的reduce这个方法: 依上图,reduce方法中传递两个参数,第一个参数是一个方法,方法中又有四个参数:分别代表 1.初始值。(也就是这个方法一开始的返回值,和reduce方法的第二个参数有关系,我一般设为空) 2.当前元素,相当于遍历数组,拿到每一个下标的值 3.数组索引(就不多说啦) 4.当前这个数组(...
第二步编写js代码用于分页的具体设置 我们线举例示范我们如何 使用 Paginatgion分页插件。 使用 方法十分简单,通过获取到我们分页导航栏的 dom 元素,然后打点调用pagination方法即可。 分页导航栏如下
好的,我可以为您介绍一下无缝轮播的原生 DOM 实现 方法。 首先,我们需要准备一个包含轮播图片的容器,设置容器的宽度为图片宽度的总和,高度为图片高度。然后,我们需要在容器内创建两个相同的图片列表,每个列表中包含所有的轮播图片。 接着,我们需要 使用 JavaScript 实现 轮播效果。具体 实现 步骤如下: 1. 获取容器和图片列表元素,并设置容器的初始位置为 0。 var container = document.getElementById('container'); var list = document.getElementById('list'); container.style.left = '0px'; 2. 创建自动轮播函数, 使用 定时器 实现 自动轮播。每次轮播时,将容器的位置向左移动一张图片的距离。如果当前位置已经到达最后一张图片,需要将容器的位置重置为第一张图片的位置。 var timer = setInterval(function() { var left = parseInt(container.style.left) - imgWidth; if (left < -imgWidth * imgCount) { left = 0; container.style.left = left + 'px'; }, 3000); 3. 创建手动轮播函数,监听容器的鼠标事件,当鼠标按下时停止自动轮播,当鼠标抬起时重新启动自动轮播。 container.onmousedown = function(event) { clearInterval(timer); var disX = event.clientX - container.offsetLeft; document.onmousemove = function(event) { var left = event.clientX - disX; if (left > 0) { left = 0; } else if (left < -imgWidth * imgCount) { left = -imgWidth * imgCount; container.style.left = left + 'px'; document.onmouseup = function(event) { document.onmousemove = null; document.onmouseup = null; timer = setInterval(autoPlay, 3000); 这样,我们就完成了无缝轮播的原生 DOM 实现 。希望这个答案能够对您有所帮助!