2021-11-26 迈向程序猿的第三十七步

本文详细介绍了JavaScript中的BOM(浏览器对象模型),包括window对象的使用,如尺寸获取、页面跳转和历史操作。同时,讲解了定时器的一次性和循环定时器实现,如定时跳转和时钟效果。此外,还探讨了Cookie的基础应用,如设置、获取和清除,以及换肤功能的实现,并结合Cookie实现了页面换肤记忆功能。
摘要由CSDN通过智能技术生成

目录

一.window操作

1.1 window对象

1.2 window尺寸

1.3 location跳转

1.4 history

二.定时器

2.1 一次性定时器

2.2 循环定时器

2.3 定时跳转

2.4 时钟效果

2.5 定时切换图片

三.Cookie

3.1 cookie基本应用

3.2 换肤功能

3.3 换肤cookie

3.4 创建对象的补充


一.window操作

1.1 window对象

<script>
		/* BOM: 浏览器对象模型,有了BOM,使得js有能力与浏览器进行交互
			     浏览器中主要通过window对象来操作js的代码
			js中所有内容都属于window,通过window可以调任意内容,包括document,console等对象     
		* */
		var a = "abc"; 
		window.document.write(window.a.length);  //全局变量属于window
		document.write(window.a.toUpperCase());
		window.console.log(window.a.toUpperCase());
		console.log(window.parseInt("123"));
		window.onload=function(){
			window.alert("hello");
		}
	</script>

1.2 window尺寸

<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
			document.write("内部宽度:"+window.innerWidth+"<br />");
			document.write("内部高度:"+window.innerHeight+"<br />");
			
			document.write("body宽度:"+window.document.body.clientWidth+"<br />");
			document.write("body高度:"+window.document.body.clientHeight+"<br />");
			
			document.write("屏幕宽度:"+window.screen.availWidth+"<br />");
			document.write("屏幕高度:"+window.screen.availHeight+"<br />");
		</script>
	</head>

1.3 location跳转

<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
			/* location:定位,可以拿到浏览器的路径信息,也可以赋值跳转到指定页面 */
			
			/*  取值  */
			/*
			document.write(window.location+"<br />");
			document.write(window.location.protocol+"<br />");
			document.write(window.location.host+"<br />");
			document.write(window.location.pathname+"<br />");
			document.write(window.location.port+"<br />");
			document.write(window.location.href+"<br />");
			*/
			
			/* 赋值--页面跳转 */
			//window.location="http://www.baidu.com";
			//window.location.assign("http://www.baidu.com");
			
			alert("页面重新加载(刷新)...");
			location.reload();  //用在函数体中
		</script>
	</head>

1.4 history

<body>
		<!-- history:用于前进,后退,与刷新操作;与浏览器的控件对应 -->
		<a href="04_history_2.html">进入最美页面</a><br />
		<input type="button" value="后退" onclick="history.back()" />
		<input type="button" value="前进" onclick="window.history.forward()" />
		<input type="button" value="刷新" onclick="location.reload()"/>
	</body>


	<body>
		<a href="04_history_1.html">我就是最美页面</a><br />
		<input type="button" value="后退2" onclick="history.go(-1)"/>
		<input type="button" value="前进2" onclick="history.go(1)"/>
		<input type="button" value="刷新2" onclick="history.go(0)"/>
		
		
		<div id="example"></div>
		<script>
			var txt = "<p>浏览器代号: " + navigator.appCodeName + "</p>";
			txt+= "<p>浏览器名称: " + navigator.appName + "</p>";
			txt+= "<p>浏览器版本: " + navigator.appVersion + "</p>";
			txt+= "<p>启用Cookies: " + navigator.cookieEnabled + "</p>";
			txt+= "<p>硬件平台: " + navigator.platform + "</p>";
			txt+= "<p>用户代理: " + navigator.userAgent + "</p>";
			txt+= "<p>用户代理语言: " + navigator.systemLanguage + "</p>";
			document.getElementById("example").innerHTML=txt;
		</script> 
		
	</body>

二.定时器

2.1 一次性定时器

<head>
		<meta charset="UTF-8">
		<title></title>
		
		<!-- 定时器: 设置定时时间,当到达了,则触发执行相关代码 
			 有两种: 1.一次性定时器
			      2.循环定时器(常用) 、
		-->
		<script>
			//一次性定时器setTimeout: 参数1:函数体   参数2:间隔时间
			var timerId;
			onload=function(){
				timerId = window.setTimeout(function(){
					alert("吓死宝宝了~");
				},3000);
			}
			
			function clearBtn(){
				clearTimeout(timerId);  /* 清除定时器 */
			}
		</script>
	</head>
	<body>
		<input type="button" value="取消定时器" onclick="clearBtn()" />
	</body>

2.2 循环定时器

<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
			/* 循环定时器: 一直持续循环执行触发的代码 */
			var timerId;
			onload=function(){
				timerId = setInterval(function(){
					alert("一直循环定时器");
				},3000);
			}
			
			function clearBtn(){
				clearInterval(timerId);
			}
		</script>
	</head>
	<body>
		<input type="button" value="取消定时器" onclick="clearBtn()" />
	</body>

2.3 定时跳转

<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			/*案例: 3,2,1 跳转到百度页面 
			  分析:使用定时器,每隔一秒改变h1的内容
			 * */
			var timerId;
			var index=3;
			onload=function(){
				var h1 = document.getElementsByTagName("h1")[0];
				timerId = setInterval(function(){
					index--;
					if(index>0){ //3,2,1能看到改变内容
						h1.innerHTML=index;
					}else{
						location.href="http://www.baidu.com"; //跳转
						clearInterval(timerId);  //清除定时器
					}
				},1000)
			}
		</script>
	</head>
	<body>
		<h1>3</h1>
	</body>

2.4 时钟效果

<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
			/* 案例:做一个时钟的效果  13:22:23
			   分析: 在循环定时器中,每隔一秒显示时间即可
			 * */
			onload=function(){
				var h1 = document.getElementsByTagName("h1")[0];
				setInterval(function(){
					var date = new Date();
					var hour = date.getHours();
					if(hour<10){
						hour = "0"+hour;
					}
					var minu = date.getMinutes();
					if(minu<10){
						minu = "0"+minu;
					}
					var sec  = date.getSeconds();
					if(sec<10){
						sec = "0"+sec;
					}
					var sum = hour+":"+minu+":"+sec;
					h1.innerHTML=sum;
				},1000);
			}
		</script>
	</head>
	<body>
		<h1></h1>
	</body>

2.5 定时切换图片

<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
			//案例: 图片定时切换
			//分析:使用定时器,在定时器中执行图片的切换,路径使用数组存储
			var a = ["../img/002.png","../img/003.png","../img/004.png","../img/005.png"];
			var index = 0;
			onload=function(){
				var img = document.getElementsByTagName("img")[0];
				setInterval(function(){
					index++;
					if(index==a.length){ //到达最后的下标,则跳会第一张
						index=0;
					}
					img.src=a[index];
					
				},1000);
			}
		</script>
	</head>
	<body>
		<img src="../img/002.png" />
	</body>

三.Cookie

3.1 cookie基本应用

<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
			/* cookie: 数据以键值对形式存储到客户端磁盘文件的方式  
			   应用场景:
			   1.浏览历史记录
			   2.记录登录账户(非重要账户,如果重要的,可以只记录用户名)
			   3.购物车信息
			   
			 弊端:
			   1.不安全,磁盘文件,容易被删除
			   2.未加密,容易被窃取数据
			   3.不能跨浏览器
			   4.容易被禁用
			   
			cookie的使用:
			   1.设置cookie
			   2.获取cookie
			   3.清除cookie
			 * */
			
			function setCookie(){
				alert("设置cookie成功!");
				//document.cookie = "username=zsf";  //设置cookie
				
				//设置cookie的有效期:expires=xxx
				var date = new Date();
				date.setTime(date.getTime()+1000*60*60*24);  //时间单位为毫秒
				document.cookie="username=zsf;expires="+date.toGMTString();
			}
			
			function getCookie(){
				alert(document.cookie);  //获取cookie
			}
			
			function clearCookie(){
				alert("清除cookie!");
				var date = new Date();
				document.cookie="username=xxx;expires="+date.toGMTString();
			}
		</script>
	</head>
	<body>
		<input type="button" value="设置cookie" onclick="setCookie()" />
		<input type="button" value="获取cookie" onclick="getCookie()"/>
		<input type="button" value="清除cookie" onclick="clearCookie()"/>
	</body>

3.2 换肤功能

<head>
		<meta charset="UTF-8">
		<title></title>

        <!--外部样式引入 -->
		<link rel="stylesheet" type="text/css" id="style"/>
	</head>
	<body>
		<!-- 案例:页面上有很多标签,有两个按钮,一个点击变红,一个点击变绿 
			分析: 1.先写上标签  2.通过js事件变色,在js中调用css外部样式
			    3.获取link标签对象,调用href属性
		-->
		
		<input type="button" value="变红" onclick="red()" />
		<input type="button" value="变绿" onclick="green()" /><br />
		
		<p>孩儿立志出乡关</p>
		<p>学不成名誓不还</p>
		<div>埋骨何须桑梓地</div>
		<h2>人生何处不青山</h2>
	
		<script>
			var link = document.getElementById("style");
			function red(){
				link.href="../css/red.css";
			}
			
			function green(){
				link.href="../css/green.css";
			}
		</script>
	</body>

3.3 换肤cookie

<head>
		<meta charset="UTF-8">
		<title></title>

        <!--外部样式引入 -->
		<link rel="stylesheet" type="text/css" id="style"/>
	</head>
	<body>
		<!-- 案例:页面上有很多标签,有两个按钮,一个点击变红,一个点击变绿 
			 升级: 记录最后一次点击的颜色效果
			分析: 1.点击变色时,设置cookie
			    2.在页面加载完成后,获取cookie,取出记录的值
		-->
		
		<input type="button" value="变红" onclick="red()" />
		<input type="button" value="变绿" onclick="green()" />
		<input type="button" value="清除颜色" onclick="clearBtn()" /><br />
		
		<p>孩儿立志出乡关</p>
		<p>学不成名誓不还</p>
		<div>埋骨何须桑梓地</div>
		<h2>人生何处不青山</h2>
	
		<script>
			var link = document.getElementById("style");
			function red(){
				link.href="../css/red.css";
				
				//设置cookie
				var date = new Date();
				date.setTime(date.getTime()+1000*60*60*24);
				document.cookie="color=red;expires="+date.toGMTString();
			}
			
			function green(){
				link.href="../css/green.css";
				
				var date = new Date();
				date.setTime(date.getTime()+1000*60*60*24);
				document.cookie="color=green;expires="+date.toGMTString();
				
			}
			
			function clearBtn(){
				alert("清除成功!");
				link.href="";  //清除页面显示颜色
				
				//清除cookie
				var date = new Date();
				date.setTime(date.getTime());
				document.cookie="color=xxx;expires="+date.toGMTString();
			}
			
			onload=function(){
				//获取cookie
				var cookie = document.cookie;  //“color=red;key=value”;
				debugger
				if(cookie){ //只有获取到cookie,才进行拆分,并取到颜色效果
					var strColor = cookie.split(";")[0];
					var key = strColor.split("=")[0];
					var value = strColor.split("=")[1];
					if(key=="color"){
						link.href="../css/"+value+".css";
					}
				}
				
			}
		</script>
	</body>

3.4 创建对象的补充

<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			/* 创建对象方式: 1.使用json数据: {name:'zs',age:30}
			 * 此外还有以下方式:
			 * 2. new Object()方式
			 */
			var st = new Object();
			/* 对象赋值 */
			st.name = "fengjie";
			st.age  = 18;
			/* 对象取值 */
			document.write(st.name+"--"+st.age+"<br />");
			
			//3.构造器方式
			var student = new Student("zsf",80);
			document.write(student.name+"=="+student.age);
			
			function Student(name,age){
				this.name = name;  //给构造器属性赋值
				this.age  = age;
			}
			
		</script>
	</head>

(>-<,这周终于结束了,期待下个礼拜,期待着大数据的魅力,希望下周的学习能让我更加有动力,感觉大数据充满了挑战!养精蓄锐,周末去吃顿大餐,GIAGIAGIAGIA~~~)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值