实战数据绑定:基于客户端的分页导航
类别: JavaScript教程
思路:用纯JS的方法,只能通过判断当前页面的文件名,然后算出上下页地址,首页和尾页需要在脚本中配置好,最后生成导航代码。用数据绑定的方法则要简单得多,设定dataPageSize,然后用 firstPage() 、previousPage() 、nextPage() 和 lastPage() 方法翻页。
代码示例:
1. 纯JS的,翻页导航的依据是文件名 page.js脚本文件代码
Number.prototype.add0 = function(){ //对数字类型的扩展,主要用于实现当数字小于一定位数时在前面补0,直到倍数达到为止
return (new Array(len).join("0")+this).slice(-len) //返回字符串,new Array(len).join("0")得到len个相连的"0",然后和数字相加,再从得到的字符串右边起向左截取len位
}
String.prototype.mlink = function(n){ //对字符类型的扩展,主要用于根据文件名中的数字生成链接
return this.link(prefix+n.add0()+suffix) //返回一个以字符串为链接文字,prefix+n.add0()+subffix为链接地址的HTML代码
}
var prefix = "page" //文件名前缀
var suffix = ".htm" //文件名后缀
var first = 1 //第一页的文件名中的数字
var last = 23 //最后一页的文件名中的数字
var len = 2 //文件名中的数字的位数,从以上四个变量中可知文件名为"page01.htm"和"page23.htm"这种形式
var cur_page = location.href.match(new RegExp(prefix+"(\\d+)"+suffix,"i"))[1]|0 //从当前页面地址中查找匹配的数字
var previous = cur_page-1 //上一页的文件名中的数字为当前页的减1
var next = cur_page+1 //下一页的文件名中的数字为当前页的加1
if(cur_page == first) previous = first //如果当前页为首页,则上一页的链接为首页
if(cur_page == last) next = last //如果当前页为尾页,则下一页的链接为尾页
navbar.innerHTML = ["首页".mlink(first),"上一页".mlink(previous),"下一页".mlink(next),"尾页".mlink(last)].join(" ") //在 id 为 navbar 的对象中生成导航链接
然后在各页中用<div id="navbar"></div><script src="page.js"></script>调用
2.对表格进行数据绑定,然后用对象的翻页方法实现
<xml id="oXML">
<forums> <forum>
<name>[FLASH技术交流]</name>
<moderator ><![CDATA[版主:赢点儿 chenye_1976 holybozo laiy.net]]></moderator>
<description ><![CDATA[新手请尽管提问,老手尽管来切磋,让学习和帮助都成为一种乐趣。]]> </description>
</forum> <forum>
<name>[Action Script讨论区]</name>
<moderator ><![CDATA[版主:hnyashiro crazydevil horidream]]></moderator>
<description ><![CDATA[Action Script应用,包含flash MX讨论]]> </description>
</forum> <forum>
<name>[Macromedia Studio MX 2004讨论学习区]</name>
<moderator ><![CDATA[版主:AOL kissall 我佛山人]]></moderator>
<description ><![CDATA[交流学习Macromedia Studio MX 2004心得与经验,欢迎提供系统教程和资料翻译.新]]>
</description>
</forum> <forum>
<name>[Flash动画技术区]</name>
<moderator ><![CDATA[版主:歪马秀 拾荒 林℃]]></moderator>
<description ><![CDATA[中级动画爱好者进级技术版块,在这里我们讨论怎样制作动画造型,动作,背景等制作技术. ]]>
</description>
</forum> <forum>
<name>[Flash游戏技术区]</name>
<moderator ><![CDATA[版主:AOL windson2002]]></moderator>
<description ><![CDATA[这里只讨论Flash游戏技术. ]]> </description>
</forum> <forum>
<name>[图形处理与视觉传达]</name>
<moderator ><![CDATA[版主:颜志 保镖豆豆 wxb_snowwolf 锾咿?o痕]]></moderator>
<description ><![CDATA[一切创作的基础来源于图形处理的基本功,Flash也不例外。喜欢这个的朋友不妨在这里交流,探讨。]]>
</description>
</forum> <forum>
<name>[手绘艺术与角色设计]</name>
<moderator ><![CDATA[版主:颜志 绯水]]></moderator>
<description ><![CDATA[手绘艺术与角色设计]]> </description>
</forum> <forum>
<name>[Flash资源共享]</name>
<moderator ><![CDATA[版主:kissall 木头 CRAZYNO1]]></moderator>
<description ><![CDATA[Flash相关资源和软件的交流.]]> </description>
</forum> <forum>
<name>[Flash 3d 技术专版]</name>
<moderator ><![CDATA[版主:白雪飘扬]]></moderator>
<description ><![CDATA[讨论怎样让flash里面的物体三维运动起来]]> </description>
</forum> <forum>
<name>[网页设计与编程]</name>
<moderator ><![CDATA[版主:海光 我佛山人 erik168]]></moderator>
<description ><![CDATA[我们讨论所有和网页设计有关的东西]]> </description>
</forum> <forum>
<name>[精品WEB-SITE]</name>
<moderator ><![CDATA[版主:梵天 chenglei4u]]></moderator>
<description ><![CDATA[精品WEB-SITE和FLASH动画的展示专版]]> </description>
</forum> <forum>
<name>[闪吧电脑学校]</name>
<moderator ><![CDATA[版主:Xray 蓝.蜗牛]]></moderator>
<description ><![CDATA[计算机的世界,由你我来探讨。你遇到的各类问题,我们会帮助你。(软硬兼施+网络)]]>
</description>
</forum> </forums>
</xml>
<style>
table{border-collapse: collapse;width:600px;font:normal 12px Tahoma;background:#EEEEEE}
button{border:1px solid #666666;background:#EEEEEE}
</style>
<center>
<table bordercolor="#333333" border="1" cellspacing="0"
cellpadding="3" datasrc="#oXML" dataPageSize="2"
id="dTable">
<tr>
<td width="25%" rowspan="2" align="center" valign="top"><span
datafld="name" /></td>
<td width="75%" height="20"><span datafld="moderator"
/></td>
</tr>
<tr>
<td><span datafld="description" /></td>
</tr>
</table>
<table border="0" cellspacing="0"
cellpadding="3" >
<tr>
<td align="right" colspan="2"><button onClick="dTable.firstPage()">首页</button><button
onClick="dTable.previousPage()">上一页</button><button onClick="dTable.nextPage()">下一页</button><button
onClick="dTable.lastPage()">尾页</button></td>
</tr>
</table>
点击查看运行效果
注意:必须设置表格的dataPageSize属性,并且数据源跟 XML 对象的 id 相对应,翻页时的对象必须跟绑定数据的表格对象相对应
提示:
dataPageSize 设置或获取绑定到数据源的表格中显示的记录数
dataSrc 设置或获取用于数据绑定的数据源
dataFld 设置或获取由 dataSrc 属性指定的绑定到指定对象的给定数据源的字段
firstPage 显示绑定表格的数据集的第一页记录
previousPage 显示绑定表格的数据集的上一页记录
nextPage 显示绑定表格的数据集的下一页记录
lastPage 显示绑定表格的数据集的最后一页记录
技巧:如果每次只显示一条记录,还可以用记录集移动的方法:
<xml id="oXML">
<forums> <forum>
<name>[FLASH技术交流]</name>
<moderator ><![CDATA[版主:赢点儿 chenye_1976 holybozo laiy.net]]></moderator>
<description ><![CDATA[新手请尽管提问,老手尽管来切磋,让学习和帮助都成为一种乐趣。]]> </description>
</forum> <forum>
<name>[Action Script讨论区]</name>
<moderator ><![CDATA[版主:hnyashiro crazydevil horidream]]></moderator>
<description ><![CDATA[Action Script应用,包含flash MX讨论]]> </description>
</forum> <forum>
<name>[Macromedia Studio MX 2004讨论学习区]</name>
<moderator ><![CDATA[版主:AOL kissall 我佛山人]]></moderator>
<description ><![CDATA[交流学习Macromedia Studio MX 2004心得与经验,欢迎提供系统教程和资料翻译.新]]>
</description>
</forum> <forum>
<name>[Flash动画技术区]</name>
<moderator ><![CDATA[版主:歪马秀 拾荒 林℃]]></moderator>
<description ><![CDATA[中级动画爱好者进级技术版块,在这里我们讨论怎样制作动画造型,动作,背景等制作技术. ]]>
</description>
</forum> <forum>
<name>[Flash游戏技术区]</name>
<moderator ><![CDATA[版主:AOL windson2002]]></moderator>
<description ><![CDATA[这里只讨论Flash游戏技术. ]]> </description>
</forum> <forum>
<name>[图形处理与视觉传达]</name>
<moderator ><![CDATA[版主:颜志 保镖豆豆 wxb_snowwolf 锾咿?o痕]]></moderator>
<description ><![CDATA[一切创作的基础来源于图形处理的基本功,Flash也不例外。喜欢这个的朋友不妨在这里交流,探讨。]]>
</description>
</forum> <forum>
<name>[手绘艺术与角色设计]</name>
<moderator ><![CDATA[版主:颜志 绯水]]></moderator>
<description ><![CDATA[手绘艺术与角色设计]]> </description>
</forum> <forum>
<name>[Flash资源共享]</name>
<moderator ><![CDATA[版主:kissall 木头 CRAZYNO1]]></moderator>
<description ><![CDATA[Flash相关资源和软件的交流.]]> </description>
</forum> <forum>
<name>[Flash 3d 技术专版]</name>
<moderator ><![CDATA[版主:白雪飘扬]]></moderator>
<description ><![CDATA[讨论怎样让flash里面的物体三维运动起来]]> </description>
</forum> <forum>
<name>[网页设计与编程]</name>
<moderator ><![CDATA[版主:海光 我佛山人 erik168]]></moderator>
<description ><![CDATA[我们讨论所有和网页设计有关的东西]]> </description>
</forum> <forum>
<name>[精品WEB-SITE]</name>
<moderator ><![CDATA[版主:梵天 chenglei4u]]></moderator>
<description ><![CDATA[精品WEB-SITE和FLASH动画的展示专版]]> </description>
</forum> <forum>
<name>[闪吧电脑学校]</name>
<moderator ><![CDATA[版主:Xray 蓝.蜗牛]]></moderator>
<description ><![CDATA[计算机的世界,由你我来探讨。你遇到的各类问题,我们会帮助你。(软硬兼施+网络)]]>
</description>
</forum> </forums>
</xml>
<style>
table{border-collapse: collapse;width:600px;font:normal 12px Tahoma;background:#EEEEEE}
button{border:1px solid #666666;background:#EEEEEE}
</style>
<center>
<table bordercolor="#333333" border="1" cellspacing="0"
cellpadding="3">
<tr>
<td width="25%" rowspan="2" align="center" valign="top"><span
datasrc="#oXML" datafld="name" /></td>
<td width="75%" height="20"><span datasrc="#oXML"
datafld="moderator" /></td>
</tr>
<tr>
<td><span datasrc="#oXML" datafld="description" /></td>
</tr>
</table>
<table border="0" cellspacing="0"
cellpadding="3" >
<tr>
<td align="right" colspan="2"><button onClick="oXML.recordset.movefirst()">首页</button><button
onClick="oXML.recordset.moveprevious();if(oXML.recordset.bof)oXML.recordset.movenext()">上一页</button><button
onClick="oXML.recordset.movenext();if(oXML.recordset.eof)oXML.recordset.moveprevious()">下一页</button><button
onClick="oXML.recordset.movelast()">尾页</button></td>
</tr>
</table>
代码示例:
1. 纯JS的,翻页导航的依据是文件名 page.js脚本文件代码
Number.prototype.add0 = function(){ //对数字类型的扩展,主要用于实现当数字小于一定位数时在前面补0,直到倍数达到为止
return (new Array(len).join("0")+this).slice(-len) //返回字符串,new Array(len).join("0")得到len个相连的"0",然后和数字相加,再从得到的字符串右边起向左截取len位
}
String.prototype.mlink = function(n){ //对字符类型的扩展,主要用于根据文件名中的数字生成链接
return this.link(prefix+n.add0()+suffix) //返回一个以字符串为链接文字,prefix+n.add0()+subffix为链接地址的HTML代码
}
var prefix = "page" //文件名前缀
var suffix = ".htm" //文件名后缀
var first = 1 //第一页的文件名中的数字
var last = 23 //最后一页的文件名中的数字
var len = 2 //文件名中的数字的位数,从以上四个变量中可知文件名为"page01.htm"和"page23.htm"这种形式
var cur_page = location.href.match(new RegExp(prefix+"(\\d+)"+suffix,"i"))[1]|0 //从当前页面地址中查找匹配的数字
var previous = cur_page-1 //上一页的文件名中的数字为当前页的减1
var next = cur_page+1 //下一页的文件名中的数字为当前页的加1
if(cur_page == first) previous = first //如果当前页为首页,则上一页的链接为首页
if(cur_page == last) next = last //如果当前页为尾页,则下一页的链接为尾页
navbar.innerHTML = ["首页".mlink(first),"上一页".mlink(previous),"下一页".mlink(next),"尾页".mlink(last)].join(" ") //在 id 为 navbar 的对象中生成导航链接
然后在各页中用<div id="navbar"></div><script src="page.js"></script>调用
2.对表格进行数据绑定,然后用对象的翻页方法实现
<xml id="oXML">
<forums> <forum>
<name>[FLASH技术交流]</name>
<moderator ><![CDATA[版主:赢点儿 chenye_1976 holybozo laiy.net]]></moderator>
<description ><![CDATA[新手请尽管提问,老手尽管来切磋,让学习和帮助都成为一种乐趣。]]> </description>
</forum> <forum>
<name>[Action Script讨论区]</name>
<moderator ><![CDATA[版主:hnyashiro crazydevil horidream]]></moderator>
<description ><![CDATA[Action Script应用,包含flash MX讨论]]> </description>
</forum> <forum>
<name>[Macromedia Studio MX 2004讨论学习区]</name>
<moderator ><![CDATA[版主:AOL kissall 我佛山人]]></moderator>
<description ><![CDATA[交流学习Macromedia Studio MX 2004心得与经验,欢迎提供系统教程和资料翻译.新]]>
</description>
</forum> <forum>
<name>[Flash动画技术区]</name>
<moderator ><![CDATA[版主:歪马秀 拾荒 林℃]]></moderator>
<description ><![CDATA[中级动画爱好者进级技术版块,在这里我们讨论怎样制作动画造型,动作,背景等制作技术. ]]>
</description>
</forum> <forum>
<name>[Flash游戏技术区]</name>
<moderator ><![CDATA[版主:AOL windson2002]]></moderator>
<description ><![CDATA[这里只讨论Flash游戏技术. ]]> </description>
</forum> <forum>
<name>[图形处理与视觉传达]</name>
<moderator ><![CDATA[版主:颜志 保镖豆豆 wxb_snowwolf 锾咿?o痕]]></moderator>
<description ><![CDATA[一切创作的基础来源于图形处理的基本功,Flash也不例外。喜欢这个的朋友不妨在这里交流,探讨。]]>
</description>
</forum> <forum>
<name>[手绘艺术与角色设计]</name>
<moderator ><![CDATA[版主:颜志 绯水]]></moderator>
<description ><![CDATA[手绘艺术与角色设计]]> </description>
</forum> <forum>
<name>[Flash资源共享]</name>
<moderator ><![CDATA[版主:kissall 木头 CRAZYNO1]]></moderator>
<description ><![CDATA[Flash相关资源和软件的交流.]]> </description>
</forum> <forum>
<name>[Flash 3d 技术专版]</name>
<moderator ><![CDATA[版主:白雪飘扬]]></moderator>
<description ><![CDATA[讨论怎样让flash里面的物体三维运动起来]]> </description>
</forum> <forum>
<name>[网页设计与编程]</name>
<moderator ><![CDATA[版主:海光 我佛山人 erik168]]></moderator>
<description ><![CDATA[我们讨论所有和网页设计有关的东西]]> </description>
</forum> <forum>
<name>[精品WEB-SITE]</name>
<moderator ><![CDATA[版主:梵天 chenglei4u]]></moderator>
<description ><![CDATA[精品WEB-SITE和FLASH动画的展示专版]]> </description>
</forum> <forum>
<name>[闪吧电脑学校]</name>
<moderator ><![CDATA[版主:Xray 蓝.蜗牛]]></moderator>
<description ><![CDATA[计算机的世界,由你我来探讨。你遇到的各类问题,我们会帮助你。(软硬兼施+网络)]]>
</description>
</forum> </forums>
</xml>
<style>
table{border-collapse: collapse;width:600px;font:normal 12px Tahoma;background:#EEEEEE}
button{border:1px solid #666666;background:#EEEEEE}
</style>
<center>
<table bordercolor="#333333" border="1" cellspacing="0"
cellpadding="3" datasrc="#oXML" dataPageSize="2"
id="dTable">
<tr>
<td width="25%" rowspan="2" align="center" valign="top"><span
datafld="name" /></td>
<td width="75%" height="20"><span datafld="moderator"
/></td>
</tr>
<tr>
<td><span datafld="description" /></td>
</tr>
</table>
<table border="0" cellspacing="0"
cellpadding="3" >
<tr>
<td align="right" colspan="2"><button onClick="dTable.firstPage()">首页</button><button
onClick="dTable.previousPage()">上一页</button><button onClick="dTable.nextPage()">下一页</button><button
onClick="dTable.lastPage()">尾页</button></td>
</tr>
</table>
点击查看运行效果
注意:必须设置表格的dataPageSize属性,并且数据源跟 XML 对象的 id 相对应,翻页时的对象必须跟绑定数据的表格对象相对应
提示:
dataPageSize 设置或获取绑定到数据源的表格中显示的记录数
dataSrc 设置或获取用于数据绑定的数据源
dataFld 设置或获取由 dataSrc 属性指定的绑定到指定对象的给定数据源的字段
firstPage 显示绑定表格的数据集的第一页记录
previousPage 显示绑定表格的数据集的上一页记录
nextPage 显示绑定表格的数据集的下一页记录
lastPage 显示绑定表格的数据集的最后一页记录
技巧:如果每次只显示一条记录,还可以用记录集移动的方法:
<xml id="oXML">
<forums> <forum>
<name>[FLASH技术交流]</name>
<moderator ><![CDATA[版主:赢点儿 chenye_1976 holybozo laiy.net]]></moderator>
<description ><![CDATA[新手请尽管提问,老手尽管来切磋,让学习和帮助都成为一种乐趣。]]> </description>
</forum> <forum>
<name>[Action Script讨论区]</name>
<moderator ><![CDATA[版主:hnyashiro crazydevil horidream]]></moderator>
<description ><![CDATA[Action Script应用,包含flash MX讨论]]> </description>
</forum> <forum>
<name>[Macromedia Studio MX 2004讨论学习区]</name>
<moderator ><![CDATA[版主:AOL kissall 我佛山人]]></moderator>
<description ><![CDATA[交流学习Macromedia Studio MX 2004心得与经验,欢迎提供系统教程和资料翻译.新]]>
</description>
</forum> <forum>
<name>[Flash动画技术区]</name>
<moderator ><![CDATA[版主:歪马秀 拾荒 林℃]]></moderator>
<description ><![CDATA[中级动画爱好者进级技术版块,在这里我们讨论怎样制作动画造型,动作,背景等制作技术. ]]>
</description>
</forum> <forum>
<name>[Flash游戏技术区]</name>
<moderator ><![CDATA[版主:AOL windson2002]]></moderator>
<description ><![CDATA[这里只讨论Flash游戏技术. ]]> </description>
</forum> <forum>
<name>[图形处理与视觉传达]</name>
<moderator ><![CDATA[版主:颜志 保镖豆豆 wxb_snowwolf 锾咿?o痕]]></moderator>
<description ><![CDATA[一切创作的基础来源于图形处理的基本功,Flash也不例外。喜欢这个的朋友不妨在这里交流,探讨。]]>
</description>
</forum> <forum>
<name>[手绘艺术与角色设计]</name>
<moderator ><![CDATA[版主:颜志 绯水]]></moderator>
<description ><![CDATA[手绘艺术与角色设计]]> </description>
</forum> <forum>
<name>[Flash资源共享]</name>
<moderator ><![CDATA[版主:kissall 木头 CRAZYNO1]]></moderator>
<description ><![CDATA[Flash相关资源和软件的交流.]]> </description>
</forum> <forum>
<name>[Flash 3d 技术专版]</name>
<moderator ><![CDATA[版主:白雪飘扬]]></moderator>
<description ><![CDATA[讨论怎样让flash里面的物体三维运动起来]]> </description>
</forum> <forum>
<name>[网页设计与编程]</name>
<moderator ><![CDATA[版主:海光 我佛山人 erik168]]></moderator>
<description ><![CDATA[我们讨论所有和网页设计有关的东西]]> </description>
</forum> <forum>
<name>[精品WEB-SITE]</name>
<moderator ><![CDATA[版主:梵天 chenglei4u]]></moderator>
<description ><![CDATA[精品WEB-SITE和FLASH动画的展示专版]]> </description>
</forum> <forum>
<name>[闪吧电脑学校]</name>
<moderator ><![CDATA[版主:Xray 蓝.蜗牛]]></moderator>
<description ><![CDATA[计算机的世界,由你我来探讨。你遇到的各类问题,我们会帮助你。(软硬兼施+网络)]]>
</description>
</forum> </forums>
</xml>
<style>
table{border-collapse: collapse;width:600px;font:normal 12px Tahoma;background:#EEEEEE}
button{border:1px solid #666666;background:#EEEEEE}
</style>
<center>
<table bordercolor="#333333" border="1" cellspacing="0"
cellpadding="3">
<tr>
<td width="25%" rowspan="2" align="center" valign="top"><span
datasrc="#oXML" datafld="name" /></td>
<td width="75%" height="20"><span datasrc="#oXML"
datafld="moderator" /></td>
</tr>
<tr>
<td><span datasrc="#oXML" datafld="description" /></td>
</tr>
</table>
<table border="0" cellspacing="0"
cellpadding="3" >
<tr>
<td align="right" colspan="2"><button onClick="oXML.recordset.movefirst()">首页</button><button
onClick="oXML.recordset.moveprevious();if(oXML.recordset.bof)oXML.recordset.movenext()">上一页</button><button
onClick="oXML.recordset.movenext();if(oXML.recordset.eof)oXML.recordset.moveprevious()">下一页</button><button
onClick="oXML.recordset.movelast()">尾页</button></td>
</tr>
</table>
- 上一篇: JAVASCRIPT实用技巧集锦
- 下一篇: 一个非常强大完整的WEB表单验证程序
-= 资 源 教 程 =-
文 章 搜 索