// 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
实现
了增删改和分页在这里与大家分享由于时间问题仿百度分页还没有
实现
请大家等待。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>addUser.html</title>
前两天看一个视频聊天时才知道的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
实现
。希望这个答案能够对您有所帮助!