JavaScript 练习2(BOM DOM)

JavaScript 练习2(BOM DOM)

1. DOM的概念

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script type="text/javascript">
			//BOM:Browser Object Model 浏览器对象模型
			//将浏览器的各个组成部分看做对象
			// * 特点:
			// 	* BOM对象不能自己创建,当HTML文档加载进内存,浏览器自动创建。
			/* * 组成:
						* Window(*****):窗口对象
						* Location(**):地址栏对象
						* History(*):历史记录(当前窗口)对象
						* Navigator :浏览器对象  基本不用仅作了解
						* Screen:显示器屏幕  基本不用仅作了解	 */
		
		</script>
	</head>
	<body>
		<h1>我的首页</h1>
		<a href="demo.html?username=zhangsan&password=123456">跳转到demo页面携带参数</a>
	</body>
</html>

demo.html:

	<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
			var text=location.search; //获取?后面的参数
			//alert(text); ?username=zhangsan&password=123456
			var arr=text.replace("?","").split("&");
			alert(arr[0]);
			alert(arr[1]);
			
		</script>
	</head>
	<body>
		<h1>demo页面</h1>
	</body>
</html>

2. Window对象

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
			//window对象
			//window对象中的方法
			//1.有关弹窗的方法
			//window.alert("弹出一个警告框");
			//alert("window对象可以省略不写");
			
			
			function del(){
				//2.弹出确认取消框
				var flag=window.confirm("你确认删除吗?"); //返回true表示确认,返回false表示取消
				if(flag){
					document.write("删除操作")
				}else{
					document.write("取消删除")
				}
			}
			
			
			function inputAddress(){
				//弹出输入框
				var text=window.prompt("请输入你的收货地址") //显示可提示用户输入的对话框。 
				document.write(text);
			}
		

		</script>
	</head>
	<body>
		<a href="javascript:void(del())">删除</a>
		
		<a href="javascript:void(inputAddress())">填写地址</a>
	</body>
</html>

3. Window对象中打开以及关闭窗口的方法


<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
			function intoWeb() {
				//打开窗口,返回的是新打开的窗口对象
				//var newWindow=window.open("http://www.163.com");
				//跳转到自己站点的页面,返回的是新打开的窗口对象
				 myWindow=window.open("index.html");
			}
			
			function gb(){
				window.close();
			}
			
			function gb2(){
				if(window.confirm("确认关闭窗口吗?")){
					myWindow.close();
				}
			}
		</script>
	</head>
	<body>
		<a href="http://www.sina.com">进入新浪</a>

		<button type="button" onclick="intoWeb()">进入网页</button>
		
		<a href="javascript:void(gb())">关闭本窗口</a>
		
		<a href="javascript:void(gb2())">关闭新打开的窗口</a>
		
	</body>
</html>

4. 定时器

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
			//执行一次的定时器
		/* 	function show(){
				alert("砰 爆炸了!")
			}
			
			window.setTimeout(show,2000);
			//window.setTimeout("show()",1000); */
			
			//设置定时器,返回的是定时器的id
			var timerID=window.setTimeout(function(){
				alert("砰 爆炸了!");
			},2000);
			
			//可以根据定时器的id取消定时器
			window.clearTimeout(timerID);
			
			
		</script>
	</head>
	<body>
	</body>
</html>

5. 循环定时器

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
			var timerID=window.setInterval(function(){
				console.log("循环定时器执行了")
			},1000)
			
			function qx(){
				window.clearInterval(timerID);
			}
		</script>
	</head>
	<body>
		<a href="javascript:void(qx())">取消定时器</a>
	</body>
</html>

6. 页面时钟

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>

	</head>
	<body>

		<h1 id="time">2022-01-07 09:39:20</h1>
	</body>

	<script type="text/javascript">
		function showTime() {
			//获取h1标签对象
			var h1 = document.getElementById("time");
			//设置标签之间的内容
			var time = new Date().toLocaleString();

			h1.innerText = time;
		}
		//先手动调用一次
		showTime();
		//循环调用
		window.setInterval(showTime, 1000);
	</script>
</html>

7. window 对象中的属性

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
			//BOM中其他对象,都是通过window对象的属性获取的
			var loc=window.location;
			var his=window.history;
			var nav=window.navigator;
			var scr=window.screen;
			
			//获取html文档对象
			var doc=window.document;
		</script>
	</head>
	<body>
	</body>
</html>

8. 地址栏对象

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
			//获取地址栏对象
			//var loc=window.location;
			//loc.href="http://www.baidu.com";
			//window.location.href="http://www.baidu.com";
			//window可以省略不写
			//href 设置或返回完整的 URL。 
			//location.href="http://www.baidu.com";
			//var text=location.href;
			//alert(text);
			//URL:统一资源定位符
			//URL由三部分组成:资源类型、存放资源的主机域名、资源文件名。
			//也可认为由4部分组成: 协议、 主机、 端口、 路径
			//URL的一般语法格式为:
			//	(带方括号[] 的为可选项):
			//protocol: // hostname[:port] / path / [:parameters][?query]#fragment
			
			//https://192.168.10.1:8080/path
			
			var hostname=location.hostname;
			var host=location.host;
			var protocol=location.protocol;
			var pathname=location.pathname;
			var search=location.search;
			var port=location.port;
			alert(hostname);
			alert(host);
			alert(protocol);
			alert(search);
			alert(port);
			
			function sx(){
				//刷新页面
				location.reload();
			}
			
		</script>
	</head>
	<body>
		<button type="button" onclick="sx()">刷新</button>
	</body>
</html>

在这里插入图片描述

在这里插入图片描述

9. URL编码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
		
			
			//浏览器的地址栏,会自动对地址栏里面的内容进行 URL编码
			
			/* decodeURI() 解码某个编码的 URI。 1 5.5 
			   encodeURI() 把字符串编码为 URI。 1 5.5 
			decodeURIComponent() 解码一个编码的 URI 组件。 1 5.5 
			encodeURIComponent() 把字符串编码为 URI 组件。 
			*/
			
			var name="我爱你们";
			//编码
			var code=encodeURI(name);
			document.write(code);
			
			//解码
			var text=decodeURI(code);
			document.write(text);
			
			

		</script>
	</head>
	<body>
		
	</body>
</html>

10. 浏览器为什么要进行编码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
			var url=location.href;
			document.write(url);
			document.write("<hr>");
			
			var v=decodeURI(url);
			document.write(v);
			
			//浏览器为什么要进行URL编码
			//参考:
			//https://www.cnblogs.com/jerrysion/p/5522673.html
		</script>
	</head>
	<body>
	</body>
</html>

11. 历史记录对象

a.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<h1>a页面</h1>
	</body>
</html>

b.html


<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
			function qj(){
				//window.history.forward();
				window.history.go(1); //给正数前进
			}
		</script>
	</head>
	<body>
		<h1>b页面</h1>
		<a href="c.html">进入c页面</a>
		<a href="javascript:void(qj())">前进</a>
	</body>
</html>

c.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
			function ht(){
				//window.history.back();
				window.history.go(-1);//给负数就是后退
			}
		</script>
	</head>
	<body>
		<h1>c页面</h1>
		<a href="javascript:void(ht())">返回</a>
	</body>
</html>

12. DOM概念

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script type="text/javascript">
			/* 
			 
			 DOM:Document Object Model  文档对象模型,就是把我们的HTML文档的各个组成部分看着一个对象
			  
			  Element 标签对象
			  Text: 文本对象
			 Attribute: 属性对象
			 Comment :注释对象
			 Node: 节点对象就是把 标签,文本 注释 属性,都可以看做节点。 结点有并列关系,父子关系
			 Document: 整个HTML文档对象
			 
			 其他几个DOM对象:他都包含在文档中,那么我们可以通过,Document 整个HTML文档对象,来获取或创建其他DOM对象
			 
			 */
			
		</script>
	</head>
	<body>

		<!-- 这是注释 -->
		<h1 align="center">一段文本</h1>
	</body>
</html>

13. document文档对象中的方法和属性

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>我的网页</title>

	</head>
	<body>
	</body>

</html>
<!-- 当我们操作DOM时, script标签放在文档下面,防止,DOM元素因为加载顺序,而获取不到 -->
<script type="text/javascript">
	// Document 对象
	// 每个载入浏览器的 HTML 文档都会成为 Document 对象。

	//获取文档对象,通过 window对象的document属性来获取文档对象


	var doc = window.document;
	//文档对象中的属性和方法
	//获取body标签对象
	var bd = doc.body;
	alert(bd);
	//获取文档的修改时间
	var time = window.document.lastModified;
	alert(time);
	//设置或获取网页的标题
	document.title = "我的新标题";
	var t = document.title;
	alert(t);
	
	//location.href
	//获取或设置地址栏中的内容
	var url=document.URL;
	alert(url);
</script>

14. 文档对象中的方法

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>

	</head>
	<body>
	</body>
	<script type="text/javascript">
	//文档对象中的方法
	//write() 向文档写 HTML 表达式 或 JavaScript 代码。 
	document.write("aaaa");
	document.write("<h1>阿三发射点发射点发</h1>")
	//获取body标签对象
	var bd=document.body;
	//设置标签的自带属性值
	//bd.bgColor="red";
	
	document.onclick=function(){
		//随机换背景颜色
		var a=Math.floor(Math.random()*255);
		var b=Math.floor(Math.random()*255);
		var c=Math.floor(Math.random()*255);
		//设置标签的自带属性值
		//bd.bgColor="rgb("+a+","+b+","+c+")";
		//设置标签的css样式
		bd.style.backgroundColor="rgb("+a+","+b+","+c+")";
	}

	</script>
</html>

15. 获取标签对象

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>

	</head>
	<body id="bd">
		<h1 id="myh1">asdfasdfasdfasdfasdfasdf</h1>

		<h2 class="myh2">2222222</h2>
		<h2 class="myh2">2222222</h2>
		<h2 class="myh2">2222222</h2>
		<h2 class="myh2">2222222</h2>
		<h2 class="myh2">2222222</h2>
		<h2 class="myh2">2222222</h2>
		<h2 class="myh2">2222222</h2>
		<h2 class="myh2">2222222</h2>
		<h2 class="myh2">2222222</h2>
		<h2 class="myh2">2222222</h2>
	</body>
	<!-- DOM操作时,script放到文档下面,防止标签对象获取不到 -->
	<script type="text/javascript">
		//通过id获取单个的标签对象
		var myh1 = window.document.getElementById("myh1");
		alert(myh1);
		//获取body标签对象
		var bd = document.body;
		var mybd = document.getElementById("bd");
		alert(bd);
		alert(mybd);
		alert(bd == mybd);


		//通过class属性值,获取多个标签对象的数组
		var h2Arr = document.getElementsByClassName("myh2");

		for (let i = 0; i < h2Arr.length; i++) {
			if (i % 2 == 0) {
				h2Arr[i].style.background = "red";
			} else {
				h2Arr[i].style.background = "yellow";
			}

		}
	</script>
</html>

16. 获取标签对象的方法

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		
	</head>
	<body>
		<h1>111111</h1>
		<h1>111111</h1>
		<h1>111111</h1>
		<h1>111111</h1>
		<h1>111111</h1>
		<h1>111111</h1>
		<h1>111111</h1>
		<h1>111111</h1>
		<h1>111111</h1>
		<h1>111111</h1>
		
		<input type="" name="username" id="" value="" />
		
		<input type="" name="password" id="" value="" />
		
		<input type="radio" name="sex" id="" value="1" />
		<input type="radio" name="sex" id="" value="0" />
	</body>
	<script type="text/javascript">
		//通过标签名来获取标签对象的数组
		var myh1=document.getElementsByTagName("h1");
		for(let i=0;i<myh1.length;i++){
			if(i%2==0){
				myh1[i].style.background="red";
			}else{
				myh1[i].style.background="blue";
			}
		}
		
		//针对input标签的获取方法,根据input标签的 name属性值获取,返回的是数组
		var objArr=document.getElementsByName("username");
		var obj=objArr[0];
		alert(obj);
		
		var objArr2=document.getElementsByName("sex");
		var obj3=objArr2[0];
		var obj4=objArr2[1];
		alert(obj3);
		alert(obj4);
	</script>
</html>

17. 获取标签对象

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<h1 id="myh1">11111111111111111111111111</h1>
		
		<h2 class="myh2">2222</h2>
		<h2 class="myh2">2222</h2>
		<h2 class="myh2">2222</h2>
		<h2 class="myh2">2222</h2>
		<h2 class="myh2">2222</h2>
		<h2 class="myh2">2222</h2>
		<h2 class="myh2">2222</h2>
		<h2 class="myh2">2222</h2>
		<h2 class="myh2">2222</h2>
		<h2 class="myh2">2222</h2>
	</body>
	<script type="text/javascript">
		//h5 新增的获取标签对象的方法
		var h1=document.querySelector("#myh1"); //根据css选择器来获取
		h1.style.color="red";
		//.querySelector()即便你通过类选择器,默认选择的是第一个  .myh2
		var myh2=document.querySelector(".myh2");
		myh2.style.color="blue";
		
		//通过类选择器选择多个,使用下面的
		var myh2s=document.querySelectorAll(".myh2");
		myh2s[1].style.color="red";
		myh2s[2].style.color="blue";
		myh2s[myh2s.length-1].style.color="pink";
		

	</script>
</html>

18. 标签对象的两个属性

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<h1 id="myh1">
			标签之间的文本
		</h1>
		
		<h2  id="myh2">
			<span>标签啊手动阀手动阀十分</span>
		</h2>
	</body>
	<script type="text/javascript">
		var myh1 = document.getElementById("myh1");
		//设置标签之间的文本
		myh1.innerText += "新的文本" //+= 追加设置
		//获取标签之间的文本
		var text = myh1.innerText;
		alert(text);
		 
		
		/* //innerHTML 设置或获取标签之间的内容,包括子标签
		var myh2 = document.getElementById("myh2");
		
		//innerHTML 会转义HTML标签
		myh2.innerHTML="<s>阿三发射点发色</s>"
		
		//var text2 = myh2.innerHTML;
		//alert(text2); */
	</script>

</html>

19. 动态的创建dom元素

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		
	</body>
	
	<script type="text/javascript">
		//动态的创建Dom元素
		//创建标签对象
		var myDiv=document.createElement("div");
		//获取body标签对象
		var bd=document.body;
		//站在父标签的角度设置子元素
		bd.appendChild(myDiv);
		//创建文本对象
		var text=document.createTextNode("这是一行文本");
		myDiv.appendChild(text);
		
		//创建属性对象
		var attr=document.createAttribute("style");
		//设置属性的值
		attr.value="color:red;font-size:25px";
		
		//给标签设置属性读写
		myDiv.setAttributeNode(attr);
		
		//给标签设置属性,另一个方法 参数,属性名 属性值
		myDiv.setAttribute("id","d1");
		
		//创建注释对象
		var comm=document.createComment("这是一行注释");
		bd.appendChild(comm);
		
		//移除属性 ,根据属性名来移除
		myDiv.removeAttribute("id");
		
		//移除属性对象
		myDiv.removeAttributeNode(attr); //传入的是属性对象,不是属性名
		
		
		//站在父元素的角度,删除子元素
		
		bd.removeChild(myDiv);
		//myDiv.remove();
		//站在自身的角度删除自己
		comm.remove();
		
		
		
	</script>
</html>

20. 替换元素和插入元素

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<h1 id="myh1">这是原来的元素</h1>
		
		<div id="d1">
			  <h2 id="nei">这是原来的h2</h2>
		</div>
	</body>
	<script type="text/javascript">
		//站在父元素的角度,替换子元素,值1:新的元素,值2:是要替换的旧元素。
		//bd.replaceChild(h4, h);
		//站在父标签的角度,在这个h1标签对象的前面插入h5这个标签对象。
		//bd.insertBefore(h5, h1);
		var oldEle=document.getElementById("myh1");
		var bd=document.body;
		var myh2=document.createElement("h2");
		myh2.innerText="新的元素h2";
		bd.replaceChild(myh2,oldEle);
		
		
		var myh3=document.createElement("h3");
		myh3.innerText="333333333333333333333";
		var myd1=document.getElementById("d1");
		//myd1.appendChild(myh3);往后面追加
		
		//站在父标签的角度,在这个#nei标签对象的前面插入myh3这个标签对象。
		myd1.insertBefore(myh3,document.getElementById("nei"));
		
	</script>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值