当我们已经熟练掌握JavaScript的语法之后,我们就该进入更深层次的学习了
首先我们思考一下:JavaScript是用来做什么的?
那么DOM就是我们学习中不可或缺的一个环节,下面让我们深入了解DOM
DOM定义:
DOM作用:
DOM树:

DOM在我们实际开发中主要用来操作元素
那么如果要操作元素,最基本的就是要先获得元素:
代码:
//注意这里返回的是元素对象
document.getElementById('ID');
案例展示:
Document
代码:
//注意这里返回的是元素对象集合
document.getElementsByTagName('TagName');
//可以获得某个父元素中的全部元素对象集合
element.getElementsByTagName('TagName');
案例展示:
Document
代码:
document.getElementByClassName('类名');
案例展示:
Document
代码:
//body元素 document.body //html元素 document.documentElement
案例展示:
Document
JavaScript使我们有能力创建动态页面,而事件就是被JavaScript所侦测到的行为。
页面中的每个元素都可以产生某些触发JavaScript的事件,简单来说就是产生:触发——响应机制
我们把事件分为三部分:
我们下面给出基本格式:
name.methodName = function() {
~~~
~~~
}
我们给出一个基础案例:
Document
我们下面给出所有可用到的事件类型:
| 鼠标事件 | 触发条件 |
|---|---|
| onclick | 鼠标点击左键触发 |
| onmouseover | 鼠标经过触发 |
| onmouseout | 鼠标离开触发 |
| onfocus | 获得鼠标焦点触发 |
| onblur | 失去鼠标焦点触发 |
| onmousemove | 鼠标移动触发 |
| onmouseup | 鼠标弹起触发 |
| onmousedown | 鼠标按下触发 |
我们学习事件的目的就是为了对元素进行修改
下面我们依次介绍一些操作元素的方法:
元素内容修改
元素内容修改有两种方法:
//element.innerText不识别HTML标签,会去除空格和换行 element.innerText = ''; //element.innerHTML识别HTML标签,不会去除空格和换行(推荐) element.innerHTML = ''; //注意:我们可以通过上述方法来获得该元素的内容
除内容修改外,元素属性同样也可以进行修改:
//我们需要把下述图片修改放于某元素的事件中就可以进行修改 img.src = '';
案例展示:
Document
时间~~~~
Document
表单元素修改
value内容修改:
input.value = '';
disabled禁用属性:
name.disabled = true; this.disable = true;
下面我们给出一个案例:
Document
样式属性操作:
//单个修改属性,适用于修改内容不多 this.style.属性内容 = ~~~;
样式整体属性操作:
//CSS重新创建类属性,在元素中加入对应类,进行属性修改,适用于大幅度修改属性 this.className = '';
下面我们给出一个案例:
Document
123
自定义属性
首先我们了解一下自定义属性:
然后我们讲一下获得属性值的方法:
//获得属性值(只能获得内置属性,即自身携带属性)
element.属性;
//获得属性值(可以获得所有属性,包括自定义属性)
element.getAttribute('属性');
然后我们讲一下设置属性值的方法:
//注意:下面两种方法中针对class的设置不同
//设置属性值(内置属性)
对象.属性名 = '属性值';
name.className = 'class1';
//设置属性值(所有属性)
对象.setAttribute('属性名','属性值');
name.setAttribute('class','class1');
最后我们讲一下删除属性值的方法:
//注意:大部分删除自定义属性
name.removeAttribute('属性名');
下面我们通过一个案例来解释:
Document
排他思想(算法)
当我们有同一组元素,我们希望某个元素实现某种样式,就需要用到循环的排他思想:
我们给出一个案例来解释排他思想:
Document
节点操作的具体作用:
节点概述:
节点基本属性:
节点分类:
我们在使用节点时,通常利用DOM树把节点划分为不同的层级关系
对象.parentNode
案例展示:
Document
对象.children
拓展:
对象.childrens
案例展示:
Document
对象.firstChild 对象.lastChild
对象.firstElementChild 对象.lastElementChild
对象.children[0] 对象.children[对象.children.length - 1]
对象.nextSibling 对象.previousSibling
对象.nextElementSibling 对象.previousElementSibling
document.createElement('tagName')
node.appendChild(child)
node.insertBefore(child,指定元素)
案例展示:
Document
node.removeChild(child)
node.cloneNode()
我们在前面已经掌握了事件的基本方法,接下来我们来学习进阶内容:
给元素添加事件,被称为注册事件或者绑定事件
注册事件有两种方法:
代码展示:
Document
给元素删除事件,被称为删除事件或者解绑事件
删除事件有两种方法:
代码展示:
Document
1
2
事件流描述的是从页面接收事件的顺序
事件发生时会在元素节点之间按照特定的顺序传播,这个传播过程即DOM事件流
DOM事件流分为3个阶段:

我们通过一些代码来解释:
Document
son
首先我们先来介绍一下事件对象:
案例展示:
Document
下面我们介绍一下常见事件对象的属性和方法:
| 事件对象属性方法 | 说明 |
|---|---|
| e.target | 返回触发事件的对象 标准 |
| e.srcElement | 返回触发事件的对象 非标准 ie6~ie8使用 |
| e.type | 返回事件的类型,比如click,mouseover |
| e.cancelBubble | 该属性阻止冒泡 非标准 ie6~ie8使用 |
| e.returnValue | 该属性 阻止默认事件(默认行为)非标准 ie6~ie8使用 比如不让链接跳转 |
| e.preventDefault() | 该属性 阻止默认事件(默认行为)标准 比如不让链接跳转 |
| e.stopPropagation() | 阻止冒泡 标准 |
下面我们用代码形式分开介绍一些属性和方法:
e.target和this的区别:
Document
111
阻止默认行为:
Document
123
百度
Document
son
事件委托解释:
事件委托原理:
事件委托的作用:
案例解释:
Document
我们在前面给出了一些鼠标操作:
| 鼠标事件 | 触发条件 |
|---|---|
| onclick | 鼠标点击左键触发 |
| onmouseover | 鼠标经过触发 |
| onmouseout | 鼠标离开触发 |
| onfocus | 获得鼠标焦点触发 |
| onblur | 失去鼠标焦点触发 |
| onmousemove | 鼠标移动触发 |
| onmouseup | 鼠标弹起触发 |
| onmousedown | 鼠标按下触发 |
下面我们再介绍一些另类的鼠标事件:
禁止右键选中:
document.addEventListener('contextmenu',function(e){
//禁止contextmenu右键鼠标操作
e.preventDefault();
}) 禁止选中文字:
document.addEventListener('selectstart',function(e){
//禁止selectstart选中文字
e.preventDefault();
}) event对象代表事件的状态,跟事件相关的一系列信息的集合
我们首先来学习鼠标事件对象:
| 鼠标属性 | 说明 |
|---|---|
| e.clientX | 当前可视页面的x |
| e.clientY | 当前可视页面的y |
| e.pageX | 当前页面的x(不具有兼容性) |
| e.pageY | 当前页面的y(不具有兼容性) |
代码示例:
Document
我们先来学习键盘事件:
| 键盘事件 | 说明 |
|---|---|
| onkeyup | 某个键盘按键被松开时触发 |
| onkeydown | 某个键盘按键被按下时触发 |
| onkeypress | 某个键盘按键被按下时触发(不能识别功能键,如ctrl,shift,左右箭头) |
注意:
然后我们来了解一下键盘事件对象:
| 键盘事件对象属性 | 说明 |
|---|---|
| e.key | 返回相应键(不具备兼容性,不推荐) |
| e.keyCode | 返回相应键的ASCII值(具有兼容性,推荐) |
注意:
案例展示:
Document
好的,那么关于DOM的全部知识点总结完毕!