js分页效果

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>无标题文档</title>
		<style>
			a {
				margin: 5px;
			}
		</style>
		<script>
			window.onload = function() {
				//执行函数
				page({

					id : 'div1',
					nowNum : 7,
					allNum : 10,
					callBack : function(now, all) {
						//回调函数
						alert('当前页:' + now + ',总共页:' + all);}			
				});

			};

			function page(opt) {
				//如果id 不存在则不执行
				if (!opt.id) {
					return false
				};

				var obj = document.getElementById(opt.id);
				//设置当前页码和总页码及其默认值
				var nowNum = opt.nowNum || 1;
				var allNum = opt.allNum || 5;
				var callBack = opt.callBack ||
				function() {
				};
                                //添加首页
				if (nowNum >= 4 && allNum >= 6) {

					var oA = document.createElement('a');
					oA.href = '#1';
					oA.innerHTML = '首页';
					obj.appendChild(oA);

				}
				//添加上一页
				if (nowNum >= 2) {
					var oA = document.createElement('a');
					oA.href = '#' + (nowNum - 1);
					oA.innerHTML = '上一页';
					obj.appendChild(oA);
				}
				//根据总页数创建各个分页码数
				//判断总页数是否为5页以上
				if (allNum <= 5) {
					for (var i = 1; i <= allNum; i++) {
						var oA = document.createElement('a');
						oA.href = '#' + i;
						//如果是当前页 则不加中括号
						if (nowNum == i) {
							oA.innerHTML = i;
						} else {
							oA.innerHTML = '[' + i + ']';
						}
						obj.appendChild(oA);
					}
				} else {

					for (var i = 1; i <= 5; i++) {
						var oA = document.createElement('a');
						//解决当前页为第一页或第二页时出现页码为负数或零的情况
						if (nowNum == 1 || nowNum == 2) {

							oA.href = '#' + i;
							if (nowNum == i) {
								oA.innerHTML = i;
							} else {
								oA.innerHTML = '[' + i + ']';
							}

						} else if ((allNum - nowNum) == 0 || (allNum - nowNum) == 1) {
							//解决当前页最后两页时总页数超出的问题
							oA.href = '#' + (allNum - 5 + i);

							if ((allNum - nowNum) == 0 && i == 5) {
								oA.innerHTML = (allNum - 5 + i);
							} else if ((allNum - nowNum) == 1 && i == 4) {
								oA.innerHTML = (allNum - 5 + i);
							} else {
								oA.innerHTML = '[' + (allNum - 5 + i) + ']';
							}

						} else {
							//以当前页为中心左右各两页
							oA.href = '#' + (nowNum - 3 + i);
							//当前页无中括号
							if (i == 3) {
								oA.innerHTML = (nowNum - 3 + i);
							} else {
								oA.innerHTML = '[' + (nowNum - 3 + i) + ']';
							}
						}
						obj.appendChild(oA);

					}

				}
				//添加下一页
				if ((allNum - nowNum) >= 1) {
					var oA = document.createElement('a');
					oA.href = '#' + (nowNum + 1);
					oA.innerHTML = '下一页';
					obj.appendChild(oA);
				}
				//添加尾页
				if ((allNum - nowNum) >= 3 && allNum >= 6) {

					var oA = document.createElement('a');
					oA.href = '#' + allNum;
					oA.innerHTML = '尾页';
					obj.appendChild(oA);

				}
				//执行回调
				callBack(nowNum, allNum);

				var aA = obj.getElementsByTagName('a');

				for (var i = 0; i < aA.length; i++) {
					aA[i].onclick = function() {
						//截取当前页码
						var nowNum = parseInt(this.getAttribute('href').substring(1));

						obj.innerHTML = '';

						page({

							id : opt.id,
							nowNum : nowNum,
							allNum : allNum,
							callBack : callBack

						});

						return false;

					};
				}

			}
		</script>
	</head>

	<body>
		<div id="div1">

		</div>
	</body>
</html>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章