Bom和Dom

一,Bom对象

bom: browser object model 浏览器对象模型 js希望和浏览器有一定的交互能力

1.window对象

所有的浏览器都支持window对象。它表示的浏览器窗口

window对象是js中的顶层对象,所有的js函数,变量等都是window对象成员

甚至Dom的document也是window对象的属性之一

1.1 frameset标签

可以把window页面进行分割, 是一个框架标签,把页面引入或者进行割,最大的缺点就不能body一块使用

<frameset> 分割的标签

<frame> 标签 引入其他页面

<frameset rows="20%,*">
		<frame src="hear.html" />
		
		<frameset cols="20%,*">
			<frame src="left.html" />
			<frame src="rigth.html" />
		</frameset>
</frameset>

1.2iframe标签

可以把window页面进行分割, 是一个框架标签,可以和body一块使用

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<iframe src="index.html"></iframe>
		可以书写自己的东东
	</body>
</html>

1.3confrim确认框架

confrim两个值 确定(true) 取消(false) var con = window.confrim(消息); 返回的类型为boolean

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			function demo(){
				var con  = window.confirm("我这么可爱你确定要删除我吗???");
				
				if(con){
					alert("算你狠!");//真正的删除了
				}else{
					alert("我知道你还是爱我的,么么哒!");//取消
				}
			}
		</script>
	</head>
	<body>
		<button onclick="demo()">删除</button>
	</body>
</html>

1.4时间周期

clearInterval()取消由setInterval()设置的timeout
clearTimeout()取消setTimeout()设置的timeout
setInterval()指定时间周期
setTimeout()在指定的毫秒数后调期函数或者计算表达式

案例1:让时间走动,设置暂停和开始按钮

		<script>
			
			//设置一个时间周期,参数1:表示是一个调用的方法,参数2:表示的时间周期
			 var interval_id = window.setInterval("_setTime()",1000);
			
			//页面一刷新,用户就可以看到时间,但是这个是静态的
			window.onload = function(){
				//获取id
				var _time = document.getElementById("_time");
				
				//获取当前时间
				var date = new Date();
				
				//把时间写入到span标签中
				_time.innerHTML = date.toLocaleString();
			}
			
			function _setTime(){
				//获取id
				var _time = document.getElementById("_time");
				
				//获取当前时间
				var date = new Date();
				
				//把时间写入到span标签中
				_time.innerHTML = date.toLocaleString();
			}
			
			//停止时间
			function _stopTime(){
				window.clearInterval(interval_id);//获取设置时间周期的id
			}
			//开始时间
			function _stratTime(){
				interval_id = window.setInterval("_setTime()",1000);
			}
			
		</script>
	</head>
	<body>
		<span style="color: red;" id="_time"></span>
		<input type="button" value="停止时间" onclick="_stopTime()"/>
		<input type="button" value="开始时间" onclick="_stratTime()"/>
	</body>

案例2:设计一个倒计时

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		
		<!-- html中有一个meta标签,可以实现页面刷新,可以看作是倒记时 -->
		<meta http-equiv="refresh" content="10;url=https://www.baidu.com">
		<title></title>
		
		<!-- 通过js配合meta标签,把这个倒记时的时间,显示给用户,效果是时间递减 -->
		<script>
			var time = 10;
			window.onload = function(){
				window.setInterval("setTime()",1000);
			}
			function setTime(){
				document.getElementById("spanid").innerHTML = time;
				time--;
			}
		</script>
		
	</head>
	<body>
		
		<center>
			<span style="font-size: 78px; color:orange; text-align: center;"  id="spanid"></span>
			 秒后跳转到<a href="https://www.baidu.com"> 百度</a>
		</center>
		<div align="center">
			<img src="img/404.jpg" />
		</div>
		
	</body>
</html>

1.5打开和关闭浏览器

close()关闭浏览器
open()打开浏览器

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			function open_Browser(){
				//打开浏览器窗口
				window.open("04-让时间动起来.html");
			}
		</script>
	</head>
	<body>
		<input type="button" value="打开浏览器" onclick="open_Browser()" />
	</body>
</html>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			//关闭浏览器
			function close_Browser(){
				window.close();
			}
		</script>
	</head>
	<body>
	<input type="button" value="关闭浏览器" onclick="close_Browser()" />
	</body>
</html>

1.6history对象

history对象包含用户访问过的url, 注意: 一定是访问过的历史url

history是window对象的一部份,可以通过window.history属性进行访问

back()加载history列表中的前一个URL
forward()加载hitory列表中的下一个URL
go()加载hitory列表中的某一个具体的页面

1.7Location对象

Location对象是window对象的一部份,可以通过window.location属性来访问

location表示是当前浏览器的地址对象。浏览器的地址中主要保存的是访问某个网站的url地址

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		
		<script>
			function order(){
				location.href = "http://www.baidu.com";
			}
		</script>
	</head>
	<body>
		
		<input type="button" value="查询订单" onclick="order()"/>
		
		<a href="http://www.baidu.com">查询订单</a>
		
	</body>
</html>

二.DOM

Dom对象: Document Object Model 文档对象模型

2.1document对象

Document对象代表整个html文档,可用来访问页面中的所有元素

document.getElementById()返回指定id对象的引用
document.getElementsByName()返回指定带有名称的对象集合
document.getElementsTagName()返回指定带有标签名的对象集合
document.getElementsByClassName()根据Class属性值获取元素对象们。返回值是一个数组
document.querySelector(id选择器)根据id选择器,获取元素
document.querySelectorAll(css选择器)根据css选择器获取元素,返回是一个数组

getElementById()

	<script>
		function demo(){
			//方式一,获取元素id
			//var inputid = document.getElementById("inputid");
			
			//方式二,获取元素id
			var inputid = document.querySelector("#inputid");
			
			if(inputid.type == "text"){
				inputid.type ="password";
			}else if(inputid.type == "password"){
				inputid.type ="text";
			}
			
		}
		
	</script>
</head>
<body>
	<input type="text" name="pwd" id="inputid"/>
	<input type="button" onclick="demo()" value="显示/隐藏密码" />
</body>

getElementsByTagName()

	<script>
		function demo1(){
			//方式一,getElementsByTagName("img"); 返回的是数组
			// var _img = document.getElementsByTagName("img");
			
			//方式二,querySelectorAll("img") 可以根据css选择器选中
			var _img = document.querySelectorAll("img");
			_img[0].width += 30;
		}
		
		function demo2(){
			var _img = document.getElementsByTagName("img");
			_img[0].width -= 30;
		}
		
	</script>
</head>
<body>
	<img src="img/404.jpg" width="450px"/>
	
	<input type="button" onclick="demo1()" value="放大" />
	<input type="button" onclick="demo2()" value="缩小" />
</body>

getElementsByName()

	<script>
		function demo(){
			//方式一, getElementsByName("hobby");
			// var hobbys = document.getElementsByName("hobby");
			
			//方式二,querySelectorAll("input[name='hobby']") css选择器
			var hobbys = document.querySelectorAll("input[name='hobby']")
			
			for (var i = 0; i < hobbys.length; i++) {
				if(hobbys[i].checked == true){
					alert(hobbys[i].value);
				}
			}
		}
		
	</script>
</head>
<body>
	<input type="checkbox" name="hobby" value="悠悠球"/>悠悠球
	<input type="checkbox" name="hobby" value="乒乓球"/>乒乓球
	<input type="checkbox" name="hobby" value="足足球"/>足足球
	
	<input type="button" value="提交" onclick="demo()" />
	
</body>

getElementsByClassName()

		<script>
			function demo(){
				//方式一,getElementsByClassName("hobby"
				// var hobbys = document.getElementsByClassName("hobby");
				
				//方式二,querySelectorAll(".hobby") css选择器
				var hobbys = document.querySelectorAll(".hobby");
				
				for (var i = 0; i < hobbys.length; i++) {
					if(hobbys[i].checked == true){
						alert(hobbys[i].value);
					}
				}
			}
		</script>
	</head>
	<body>
		
		<input type="checkbox" name="hobby" class="hobby" value="悠悠球"/>悠悠球
		<input type="checkbox" name="hobby" class="hobby" value="乒乓球"/>乒乓球
		<input type="checkbox" name="hobby" class="hobby" value="足足球"/>足足球
		
		<input type="button" value="提交" onclick="demo()" />
		
	</body>

2.2操作内容

属性名描述
element.innerText获取或者修改元素的纯文本内容
element.innerHTML获取或者修改元素的html内容
element.outerHTML获取或者修改包含自身的html内容

innerHTML 获取标签中所有内容,包括标签;从对象的起始位置到终止位置的全部内容

innerText 获取标签中纯文本内容,不包括标签;

outerHTML 获取标签本身,修改标签本身 ,添加标签本身的后面

2.3常用事件

点击事件

事件描述
onclick单击事件
ondblclick双击事件

焦点事件

事件描述
onblur失去焦点
onfocus元素获得焦点

加载事件

事件描述
onload页面加载完成后立即发生

鼠标事件

事件描述
onmousedown鼠标按钮被按下
onmouseup鼠标按键被松开
onmousemove鼠标被移动
onmouseover鼠标移到某元素之上
onmouseout鼠标从某元素移开

键盘事件

事件描述
onkeydown某个键盘按键被按下
onkeyup某个键盘按键被松开
onkeypress某个键盘按键被按下并松开

改变事件

事件描述
onchange域的内容被改变

表单事件

事件描述
onsubmit提交按钮被点击

事件案例一(聚焦离焦事件)

<script>
			
			function demo(){
				//获取用户输入信息
				var name =  document.querySelector("#uid").value;
				//正则
				var regExp = new RegExp("^1[3456789]\\d{9}$");
				//判断是否满足正则
				if(regExp.test(name)){
					document.getElementById("spanid").innerText = "合法";
					//提交到后台,后台到db,查询有没有这个手机号,如果有,手机号已存在!!
				}else{
					document.getElementById("spanid").innerText = "不合法";
				}
			}
			
			function demo2(){
				alert("我是聚焦事件")
			}
			
		</script>
	</head>
	<body>
		
		手机号:<input type="text" name="username" id="uid" onblur="demo()" /><span id="spanid"></span><br>
		密码:<input type="text" name="pwd" id="pid" onfocus="demo2()" /><span id="spanid"></span>
		
	</body>

事件案例二(鼠标悬浮离开事件)

<script>
			
			window.onload = function(){
				//获取初始的图片
				var _img = document.getElementById("img");
				
            	//绑定鼠标悬浮事件	
				_img.onmouseover = function(){
					_img.src = "img/p4.jpg";
				}
            	//绑定鼠标离开事件
				_img.onmouseout = function(){
					_img.src = "img/p3.jpg";
				}
			}
		</script>
	</head>
	<body>
		
		<img src="img/p3.jpg" id="img" width="450px"/>
		
	</body>

事件案例三(键盘按下松开)

	<script>
			window.onload = function(){
            	 //获取input框
				var _input = document.getElementById("iid");
				
            	//绑定键盘按下事件
				_input.onkeydown = function(){
					_input.style.background = "yellow";
				}
            	//绑定键盘松开事件
				_input.onkeyup = function(){
					_input.style.background = "red";
				}
				
			}
		</script>
	</head>
	<body>
		
		<input type="text" id="iid" />
		
	</body>

2.4操作节点

createElement(标签名称)创建标签
appendChild为某一个标签,去添加子标签
removeChild为某一个标签,删除孩子标签
setAttribute为某一个标签添属性
removeAttribute删除某一个标签中的属性

appendChild添加子标签

<script>
		function addElement(){
			//创建标签
			var _li = document.createElement("li");//<li></li>
			
			//创建文本
			var textNode = document.createTextNode("一燕");//一燕
				
			//添加文本到li标签中
			_li.appendChild(textNode);//<li>一燕</li>
			
			//添加到父标签中
			document.getElementById("myul").appendChild(_li);
		}
	</script>
</head>
<body>
	
	<ul id="myul">
		<li>jack</li>
		<li>rose</li>
	</ul>
	
	<input type="button" onclick="addElement()"  value="添加子标签" />
</body>

removeChild删除子标签(parentNode.removechild())

指定删除

<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			function demo(){
				//指定删除子标签
				var node = document.getElementById("x1");
				//删除子标签
				node.parentNode.removeChild(node);
			}
		</script>
	</head>
	<body>
		
		<ul id="myul">
			<li>jack</li>
			<li id="x1">rose</li>
			<li>tom</li>
			<li>mary</li>
		</ul>
		
		<input type="button" onclick="demo()" id="inputid" value="删除子标签" />
	</body>
	
</html>

setAttribute添加属性

<body>
	<input type="text" name="username"  autocomplete="off">
	<input type="text" name="username">
	<input type="text" name="username">
	<input type="text" name="username">
	<input type="text" name="username">
</body>
<script>
	window.onload = function(){
		//给所有input添加 autocomplete="off"
		var tagName = document.getElementsByTagName("input");
		for (var i = 0; i < tagName.length; i++) {
			tagName[i].setAttribute("autocomplete","off");
		}
	}
</script>

removeAttribute删除属性

<body>
	<input type="text" name="username"  autocomplete="off">
	<input type="text" name="username">
	<input type="text" name="username">
	<input type="text" name="username">
	<input type="text" name="username">
</body>
<script>
	window.onload = function(){
		//给所有input添加 autocomplete="off"
		var tagName = document.getElementsByTagName("input");
		//遍历
		for (var i = 0; i < tagName.length; i++) {
			//移除input框中所有name属性
			tagName[i].removeAttribute("name");
		}
	}
</script>

2.5操作样式

通过js动态修改元素的样式。

语法

  • 设置一个css样式

js对象.style.样式名='样式值'

  • 批量设置css样式-了解

js对象.style.cssText='属性名:属性值;...'

  • 通过class设置样式【重点】

js对象.className='样式名称1; 样式名称2;...'

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值