05 javascript知识点---BOM和DOM
1.DOM简单学习(为了满足案例要求)
功能:控制html文档的内容
获取页面标签(元素)对象:Element
  document.getElementById("id值"):通过元素的id获取元素对象
操作Element对象:
		  1. 修改属性值:
			    1. 明确获取的对象是哪一个?
			    2. 查看API文档,找其中有哪些属性可以设置
		  2. 修改标签体内容:
			    * 属性:innerHTML
			    1. 获取元素对象
			    2. 使用innerHTML属性修改标签体内容
2.事件简单学习
功能: 某些组件被执行了某些操作后,触发某些代码的执行。
 如何绑定事件
  1. 直接在html标签上,指定事件的属性(操作),属性值就是js代码
			    1. 事件:onclick--- 单击事件
2. 通过js获取元素对象,指定事件属性,设置一个函数(掌握)
案例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>电灯开关</title>
</head>
<body>
<img src="img/off.gif" id="light">
<script>
var light=document.getElementById("light");
var flag=false;
light.onclick=fun;
function fun() {
if(!flag){
light.src="img/on.gif";
flag=true;
}else {
light.src="img/off.gif";
flag=false;
} } </script>
</body>
</html>

3.BOM:
(1)概念:Browser Object Model 浏览器对象模型
		* 将浏览器的各个组成部分封装成对象。
(2)组成:
		  * Window:窗口对象
		  * Navigator:浏览器对象(基本不用)
		  * Screen:显示器屏幕对象(基本不用)
		  * History:历史记录对象
		  * Location:地址栏对象
(3)Window:窗口对象
	      1. 创建
	      2. 方法
	             1. 与弹出框有关的方法:
	                  <1>alert()	显示带有一段消息和一个确认按钮的警告框。
	                  <2>confirm()	显示带有一段消息以及确认按钮和取消按钮的对话框。
	                        * 如果用户点击确定按钮,则方法返回true
	                        * 如果用户点击取消按钮,则方法返回false
	             2. 与打开关闭有关的方法:
	                  close()	关闭浏览器窗口。
	                       谁调用我 ,我关谁
	                  open()	打开一个新的浏览器窗口
	                      * 返回新的Window对象
	             3. 与定时器有关的方式
	                  setTimeout()	在指定的毫秒数后调用函数或计算表达式。
	                      * 参数:
	                          1. js代码或者方法对象
	                          2. 毫秒值
	                      * 返回值:唯一标识,用于取消定时器
	                  clearTimeout()	取消由 setTimeout() 方法设置的 timeout。
      setInterval()	按照指定的周期(以毫秒计)来调用函数或计算表达式。
	                  clearInterval()	取消由 setInterval() 设置的 timeout。
案例:轮播图
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>轮播图</title> </head>
<body>
<img src="img/banner_1.jpg" width="100%" id="img_banner">
<script>
var number=1;
function changepic() {
if(number<4){
var img=document.getElementById("img_banner");
img.src="img/banner_"+number+".jpg";
number++;
}else {
number=1;
}
}
setInterval(changepic,2000); //注意:参数1为函数名,不能加()
</script>
</body>
</html>
(4) Location:地址栏对象
		  1. 创建(获取):
			    1. window.location
			    2. location
  2. 方法:
			    * reload()	重新加载当前文档。刷新
		  3. 属性
			    * href	设置或返回完整的 URL。
案例:自动跳转回首页
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>自动跳转首页</title>
<style>
span{
color: red;
}
p{
text-align: center;
}
</style>
<script>
var number=5;
function timeshow() {
if(number>0){
number--;
var span_number=document.getElementById("span_number"); //获取span标签
span_number.innerHTML=number+"";
}else {
//跳转到首页
location.href="https://hao.360.com/?a1004"
}
}
setInterval(timeshow,1000);
</script>
</head>
<body>
<p><span id="span_number">5</span>秒后,自动跳转到首页</p>
</body>
</html>
4.DOM:
 概念: Document Object Model 文档对象模型
 将标记语言文档的各个组成部分,封装为对象。可以使用这些对象,对标记语言文档进行CRUD的动态操作
W3C DOM 标准被分为 3 个不同的部分:
  * 核心 DOM - 针对任何结构化文档的标准模型
			    (1)Document:文档对象(掌握)
			    (2)Element:元素对象(掌握)
			    (3)Attribute:属性对象
			    (4)Text:文本对象
			    (5) Comment:注释对象
    (6) Node:节点对象,其他5个的父对象
		  * XML DOM - 针对 XML 文档的标准模型
		  * HTML DOM - 针对 HTML 文档的标准模型
* 核心DOM模型:
		  (1) Document:文档对象
			    1. 创建(获取):在html dom模型中可以使用window对象来获取
				      1. window.document
				      2. document
			    2. 方法:
				      1. 获取Element对象:
					        1. getElementById()	: 根据id属性值获取元素对象。id属性值一般唯一
					        2. getElementsByTagName():根据元素名称获取元素对象们。返回值是一个数组
					        3. getElementsByClassName():根据Class属性值获取元素对象们。返回值是一个数组
					        4. getElementsByName(): 根据name属性值获取元素对象们。返回值是一个数组
				      2. 创建其他DOM对象:
					        createAttribute(name)
                	        createComment()
                	        createElement()
                	        createTextNode()
			      3. 属性
		        * Element:元素对象
			        1. 获取/创建:通过document来获取和创建
			        2. 方法:
				          1. removeAttribute():删除属性
				          2. setAttribute():设置属性
		  (2)Node:节点对象,其他5个的父对象
			    * 特点:所有dom对象都可以被认为是一个节点
			    * 方法:
				    * CRUD dom树:
					      * appendChild():向节点的子节点列表的结尾添加新的子节点。
					      * removeChild()	:删除(并返回)当前节点的指定子节点。
					      * replaceChild():用新节点替换一个子节点。
			      * 属性:
				      * parentNode 返回节点的父节点。
案例:动态表格
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>动态表格</title> <style>
table{
border: 1px solid;
margin: auto;
width: 500px;
} td,th{
text-align: center;
border: 1px solid;
}
div{
text-align: center;
margin: 50px;
}
</style> </head>
<body> <div>
<input type="text" id="id" placeholder="请输入编号">
<input type="text" id="name" placeholder="请输入姓名">
<input type="text" id="gender" placeholder="请输入性别">
<input type="button" value="添加" id="btn_add"> </div> <table id="table">
<caption>学生信息表</caption>
<tr>
<th>编号</th>
<th>姓名</th>
<th>性别</th>
<th>操作</th>
</tr> <tr>
<td>1</td>
<td>令狐冲</td>
<td>男</td>
<td><a href="javascript:void(0);" onclick="delTr(this)">删除</a></td>
</tr> <tr>
<td>2</td>
<td>任我行</td>
<td>男</td>
<td><a href="javascript:void(0);" onclick="delTr(this)">删除</a></td>
</tr> <tr>
<td>3</td>
<td>岳不群</td>
<td>?</td>
<td><a href="javascript:void(0);" onclick="delTr(this)">删除</a></td>
</tr> </table>
<script>
//1.获取按钮
document.getElementById("btn_add").onclick=function(){
//2.获取文本内容
var id = document.getElementById("id").value;
var name = document.getElementById("name").value;
var gender = document.getElementById("gender").value; //方法一
var table = document.getElementById("table");
table.innerHTML+="<tr>\n" +
" <td>"+id+"</td>\n" +
" <td>"+name+"</td>\n" +
" <td>"+gender+"</td>\n" +
" <td><a href=\"javascript:void(0);\" onclick=\"delTr(this)\">删除</a></td>\n" +
" </tr>" //方法二
// //3.创建td
// var td_id = document.createElement("td");
// var text_id = document.createTextNode(id); //创建一个文本的子节点
// td_id.appendChild(text_id);
//
// var td_name = document.createElement("td");
// var text_name = document.createTextNode(name);
// td_name.appendChild(text_name);
//
// var td_gender = document.createElement("td");
// var text_gender = document.createTextNode(gender);
// td_gender.appendChild(text_gender);
//
// var td_delete = document.createElement("td");
// var del_a = document.createElement("a");
// del_a.setAttribute("href","javascript:void(0);");
// del_a.setAttribute("onclick","delTr(this)");
// var text_a = document.createTextNode("删除");
// del_a.appendChild(text_a);
// td_delete.appendChild(del_a);
//
// //4.将td添加到tr上
// var tr = document.createElement("tr");
// tr.appendChild(td_id);
// tr.appendChild(td_name);
// tr.appendChild(td_gender);
// tr.appendChild(td_delete);
// var table =document.getElementById("table");
// table.appendChild(tr); }; //删除tr
function delTr(obj) {
//获取父节点
var table = obj.parentNode.parentNode.parentElement;
var tr = obj.parentNode.parentNode;
table.removeChild(tr);
}
</script>
</body>
</html>

HTML DOM
		  1. 标签体的设置和获取:innerHTML
		  2. 使用html元素对象的属性
		  3. 控制元素样式
			    1. 使用元素的style属性来设置
				    如:
					     //修改样式方式1
			            div1.style.border = "1px solid red";
			            div1.style.width = "200px";
			            //font-size--> fontSize
			            div1.style.fontSize = "20px";
			    2. 提前定义好类选择器的样式,通过元素的className属性来设置其class属性值。
5.事件监听机制:
概念:某些组件被执行了某些操作后,触发某些代码的执行。	
事件:某些操作。如: 单击,双击,键盘按下了,鼠标移动了
事件源:组件。如: 按钮 文本输入框...
监听器:代码。
注册监听:将事件,事件源,监听器结合在一起。 当事件源上发生了某个事件,则触发执行某个监听器代码。
* 常见的事件:
		  1. 点击事件:
			    1. onclick:单击事件
			    2. ondblclick:双击事件
		  2. 焦点事件
			    1. onblur:失去焦点
			    2. onfocus:元素获得焦点。
  3. 加载事件:
			    1. onload:一张页面或一幅图像完成加载。
  4. 鼠标事件:
			    1. onmousedown	鼠标按钮被按下。
			    2. onmouseup	鼠标按键被松开。
			    3. onmousemove	鼠标被移动。
			    4. onmouseover	鼠标移到某元素之上。
			    5. onmouseout	鼠标从某元素移开。
  5. 键盘事件:
			    1. onkeydown	某个键盘按键被按下。	
			    2. onkeyup		某个键盘按键被松开。
			    3. onkeypress	某个键盘按键被按下并松开。
  6. 选择和改变
			    1. onchange	域的内容被改变。
			    2. onselect	文本被选中。
  7. 表单事件:
			    1. onsubmit	确认按钮被点击。
			    2. onreset	重置按钮被点击。
案例:表格全选
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>表格全选</title>
<style>
table{
border: 1px solid;
width: 500px;
margin-left: 30%;
} td,th{
text-align: center;
border: 1px solid;
}
div{
margin-top: 10px;
margin-left: 30%;
} .over{
background-color: pink;
} .out{
background-color: white;
}
</style> <script>
window.onload=function () {
//全选
document.getElementById("selectAll").onclick=function () {
//获取所有的checkbox
var cbs = document.getElementsByName("cb");
for (var i = 0; i <cbs.length ; i++) {
cbs[i].checked=true;
}
}; //全不选
document.getElementById("unSelectAll").onclick=function () {
//获取所有的checkbox
var cbs = document.getElementsByName("cb");
for (var i = 0; i <cbs.length ; i++) {
cbs[i].checked=false;
}
}; //反选
document.getElementById("selectRev").onclick=function () {
//获取所有的checkbox
var cbs = document.getElementsByName("cb");
for (var i = 0; i <cbs.length ; i++) {
cbs[i].checked=!(cbs[i].checked);
}
}; //给所有tr绑定鼠标移动事件
var trs =document.getElementsByTagName("tr");
for (var i = 0; i <trs.length ; i++) {
trs[i].onmouseover=function () {
this.className="over";
}; trs[i].onmouseout=function () {
this.className="out";
}
} }
</script> </head>
<body> <table>
<caption>学生信息表</caption>
<tr>
<th><input type="checkbox" name="cb"></th>
<th>编号</th>
<th>姓名</th>
<th>性别</th>
<th>操作</th>
</tr> <tr>
<td><input type="checkbox" name="cb"></td>
<td>1</td>
<td>令狐冲</td>
<td>男</td>
<td><a href="javascript:void(0);">删除</a></td>
</tr> <tr>
<td><input type="checkbox" name="cb"></td>
<td>2</td>
<td>任我行</td>
<td>男</td>
<td><a href="javascript:void(0);">删除</a></td>
</tr> <tr>
<td><input type="checkbox" name="cb"></td>
<td>3</td>
<td>岳不群</td>
<td>?</td>
<td><a href="javascript:void(0);">删除</a></td>
</tr> </table>
<div>
<input type="button" id="selectAll" value="全选">
<input type="button" id="unSelectAll" value="全不选">
<input type="button" id="selectRev" value="反选">
</div>
</body>
</html>
效果图:

05 javascript知识点---BOM和DOM的更多相关文章
- JavaScript的BOM和DOM
		
JavaScript的BOM和DOM 1,window对象,所有浏览器都支持window对象,它表示浏览器窗口 BOM(browser Object Model)是指浏览器对象模型,它使JavaScr ...
 - [JavaScript之BOM与DOM]
		
[JavaScript之BOM与DOM] BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进行"对话". DOM ( ...
 - Javascript之BOM与DOM讲解
		
一.Javascript组成 JavaScript的实现包括以下3个部分: ECMAScript(核心) 描述了JS的语法和基本对象. 文档对象模型 (DOM) 处理网页内容的方法和接口 浏览器对象模 ...
 - 前端--javaScript之BOM和DOM
		
BOM和DOM概述 BOM(Browser Object Model):是指浏览器对象模型,它使js有能力和浏览器进行"对话". DOM(Document Object Model ...
 - 【JavaScript】BOM和DOM
		
在第一篇JavaScript视频总结博客中.是对JavaScript做了一个宏观的认识.当中,不知道大家可否还记得.JavaScript的核心部分包含哪些? JavaScript的核心部分主要包含三个 ...
 - JavaScript之BOM和DOM
		
前戏 到目前为止,我们已经学过了JavaScript的一些简单的语法.但是这些简单的语法,并没有和浏览器有任何交互. 也就是我们还不能制作一些我们经常看到的网页的一些交互,我们需要继续学习BOM和DO ...
 - 前端06 /JavaScript之BOM、DOM
		
前端06 /JavaScript 目录 前端06 /JavaScript 昨日内容回顾 js的引入 js的编程要求 变量 输入输出 基础数据类型 number string boolean null ...
 - 前端javascript之BOM、DOM操作、事件
		
BOM与DOM操作 BOM 浏览器对象模型>>>:使用js操作浏览器 DOM 文档对象模型>>>:使用js操作前端页面 window对象 所有浏览器都支持 wind ...
 - javascript的BOM,DOM对象
		
BOM对象 window对象 所有浏览器都支持 window 对象.概念上讲.一个html文档对应一个window对象.功能上讲: 控制浏览器窗口的.使用上讲: window对象不需要创建对象,直接使 ...
 
随机推荐
- 7-html列表
			
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
 - 简易配置中心Confd入手
			
改成动态更新配置文件,如下每五秒重新生成配置文件 confd与etcd的使用 Add keys This guide assumes you have a working etcd, or consu ...
 - Centos7配置静态网卡
			
1.打开VMware,查看ifconfig 2.进入网卡编辑 [root@localhost ~]# cd /etc/sysconfig/network-scripts/ [root@localhos ...
 - 安装python问题
			
configure: error: in `/home/wangqianqian/Desktop/Python-3.6.7':configure: error: no acceptable C com ...
 - HTTP协议(待写)
			
先来了解了解 TCP/IP TCP/IP(Transmission Control Protocol / Internet Protocol)是计算机通讯必须遵守的规则,是不同的通信协议的大集合,其里 ...
 - .net解决大文件断点续传
			
以ASP.NET Core WebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API ,包括文件的上传和下载. 准备文件上传的API #region 文件上传 ...
 - 浏览器事件循环 & nodejs事件循环
			
第1篇:如何理解EventLoop——宏任务和微任务篇 宏任务(MacroTask)引入 在 JS 中,大部分的任务都是在主线程上执行,常见的任务有: 渲染事件 用户交互事件 js脚本执行 网络请求. ...
 - 洛谷P1854 花店橱窗布置
			
题目 DP,直接递推比记忆化搜索简单. 定义状态\(dp[i][j]\)为前i行最后一个选择第i行第j个数所得到最大值. 易得状态转移方程 \(dp[i][j]=max(dp[i-1][k]+a[i] ...
 - shell脚本编程基础之函数
			
函数 作用:代码重用 定义函数: 方法1: function FUNCTION_NAME { #函数名和定义变量名一样,只能包含数字字母下划线,并且不能以数字开头 command } 方法2: FUN ...
 - HTML试题解析
			
1.关于CSS为什么会出现Bug说法不正确的是(). (选择二项) A:编写CSS样式时需要考虑在不同浏览器中实现表现一致 B:各大主流浏览器由于不同厂家开发,浏览器使用的内核不同,支持CSS的程度不 ...