Java程序猿必学第三十四篇——JS(JavaScript)BOM

1. 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. 定时器(重点)
  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>



3. 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>






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值