js实现web分页

web分页的实现

  1. html+css+js,代码如下:
<!DOCTYPE html>
<html>

<!--之前:点击下一页:老是出现下一页移至第二行,是因为page的长度不够,因为,每个小方块的数字由单个变为双个,数字被撑大,所以如此-->
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script src="js/jquery-1.11.0.js" type="text/javascript"></script>
		<style type="text/css">
			#page {
				height: 6%;
				width: 55%;
				background-color: gainsboro;
				position: absolute;
				left: 21%;
				top: 40%;
				/*overflow: hidden;*/
			}
			
			#page a {
				background-color: white;
				text-decoration: none;
				padding: 4px 10px 1px;
				margin-left: 10px;
				margin-top: 5px;
				display: inline-block;
				border-radius: 3px;
			}
			
			#page a:hover {
				background-color: greenyellow;
			}
			
			a:visited {
				color: black;
			}
		</style>
	</head>

	<body>
		<div id="page">

			<!--如果href属性为空:则会出现点击图标,出现要打印的苏剧一闪而过的问题-->
			<a href="#">上一页</a>
			<a href="#">1</a>
			<a href="#">2</a>
			<a href="#">3</a>
			<a href="#">4</a>
			<a href="#">5</a>
			<a href="#">6</a>
			<a href="#">7</a>
			<a href="#">8</a>
			<a href="#">9</a>
			<a href="#">10</a>
			<a href="#">下一页</a>
		</div>
		<script type="text/javascript">
			function $(exp) { //获取元素  #box
				var el;

				//对exp匹配以#开头的字符串,且匹配数字、字母、下划线、且以+结尾的字符串,如果存在该匹配,则返回true
				if(/^#\w+$/.test(exp)) {
					el = document.querySelector(exp);
				} else {
					el = document.querySelectorAll(exp);
				}
				return el;
			}

			//			var page=document.getElementById("#page");
			var page = $("#page");

			//定义一个全局变量count,用于计数
			var count=0;
			
				
			page.onclick = function(ev) {
				//利用事件冒泡的原理,把事件添加给父级box
				//	var oEvent = ev || event; //意思是 ev 成立时 oEvent = event,否则 oEvent = ev
				//设置最大页大数量
				var page_maxsize = 20;
				var e = ev || event;
				//打印事件
				console.log("即将打印数据");
				console.log(e);
				var target = e.target || e.srcElement; //获取当前点击对象
				
				
				
				
				//在点击页码之前获取id=page的div下的所有标签名为a的元素
				var a_tag = document.getElementById("page").getElementsByTagName("a");

				//如果点击的不是上一页和下一页,则为当前页
				var page_Num = target.innerHTML;
				//用于存储第一个target到数组,让后面的target与此相比较,注意:数组当中有且只有一个数组
				mytarget(target);
				if(page_Num>=1 && page_Num<=page_maxsize && page_Num != "上一页" && page_Num != "下一页"){										
					target.style.backgroundColor="pink";					
					//判断当前的target和上一次的target是否相同					
					if(count>0 && target.innerHTML!=arr[0].innerHTML){
						//如果不相等,则将当前的target存入数组,替换原先的元素,且将原先的元素的背景色还原为白色	
						arr[0].style.backgroundColor="white";
						arr[0]=target;
						target.style.backgroundColor="pink";							
					}
					count++;
					
					if(page_Num>6 && page_Num<=(page_maxsize-4) && page_Num != "上一页" && page_Num != "下一页") {
					for(i = 1; i <= 10; i++) {						
						a_tag[i].innerHTML = i + (page_Num - 6);
					}
					
				}
				}
				
				
				

				//对上一页和下一页进行隐藏或显示的判断		
				if(page_Num == 1) {
					a_tag[0].style.display = "none";
				} else {
					//注意:这里要设置为inline,如果设置为block会乱
					a_tag[0].style.display = "inline";
				}
				//如果当前页为最后一页
				if(page_Num == page_maxsize) {
					a_tag[11].style.display = "none";
				} else {
					//注意:这里要设置为inline,如果设置为block会乱
					a_tag[11].style.display = "inline";
				}


				//对上一页和下一页的点击进行处理
				if(page_Num == "上一页" || page_Num == "下一页") {
					//对最新的每个小方块的页码进行更新
					var a_tag_2 = document.getElementById("page").getElementsByTagName("a");
					if(page_Num == "上一页") {
						var i;
						for(i = 1; i <= 10; i++) {
							if(a_tag_2[10].innerHTML > 10)
								a_tag_2[i].innerHTML -= 1;
						}
					}
					if(page_Num == "下一页") {
						//对最新的每个小方块的页码进行更新
						var a_tag_3 = document.getElementById("page").getElementsByTagName("a");
						var i;
						for(i = 1; i <= 10; i++) {
//						    console.log(a_tag_3[i].innerHTML+" ");
							if(a_tag_3[10].innerHTML < page_maxsize){
								//a_tag_3[i].innerHTML:得到的值为字符串,所以会出现:"1"+1=11而不是=2
//								parseInt():可以将字符串转换为数字
								a_tag_3[i].innerHTML=parseInt(a_tag_3[i].innerHTML)+1;
								console.log(a_tag_3[i].innerHTML);
							}
								
						}
					}

				}
			}
		</script>
		<script>
			//创建一个函数,用于对初始target进行存储
			var arr=[];	
			function mytarget(target){
				if(count==0){														
				arr[0]=target;				
				}
			}
		</script>
	</body>

</html>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

还有多多不足之处,还请大家指教

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值