一、DOM
1.1 DOM
整体感知
我们前面JS
学习都是核心语言部分,也就是ECMAscript
。一般都是在控制台,输出语句里操作。JS还包括DOM
和BOM
。
DOM
(Document Object Model
,文档对象模型)描绘了一个层次化的节点树,允许开发人员添加、移除和修改页面的某一部分。
这使得JavaScript
操作HTML
,不是在操作字符串,而是在操作节点,极大的降低了编程难度。
DOM
对很多东西做了抽象,提供了丰富的API
:
取得元素
、CSS样式
、事件
、运动
、元素尺寸位置
、节点操作
。
1 | <style> |
1.2 html
操作
document
:表示整个文档对象,document
具有很多的方法或者属性,通过点语法进行调用
1.2.1 document.title
网页标题
1 | <title>标题</title> |
1.2.2 通过点语法获取body
对象
1 | // 通过点语法获取body对象 |
1.2.3 读取设置元素属性值
一般我们操作元素都是从获取元素对象开始
1.2.3.1 getElementById()
获取元素对象
getElementById()
:调用对象:document
参数:id名。注意不要写#
返回值:元素对象
- id是唯一的,通过id获取元素对象不能更改id名。id属性是只读属性,不能更改
1 | // 获取元素对象 |
- id可以通过点语法调用属性值,但不允许更改
1 | // 通过点语法读取元素的属性值 |
- 可以使用
=
进行属性值的设置
1 | <img src="images/nv0.jpg" alt="" id="pic"> |
- 元素对象
.innerHTML
可以读取元素的内部文本
1 | <div class="box" id="box">盒子</div> |
- value:获取表单元素文本
1 | <p> |
- 想获取class属性值需要改名字className
1 | // 想获取class属性值需要改名字className |
1.2.3.2 getAttribute()
获取元素属性值
getAttribute()
:可以读取元素自带的属性值,还可以读取元素自定义属性值调用对象:元素对象
参数:属性名
返回值:属性值
1 | <div class="box" id="box" data-ming="xiangzi">盒子</div> |
1.2.3.3 setAttribute()
设置属性值
setAttribute():设置属性值
调用对象:元素对象
参数:第一个参数:属性名 第二个参数:属性值
1 | // 设置属性 setAttribute() |
1.2.4 点语法
、getAttribute()
、setAttribute()
区别
① 点语法只能读取,设置元素的自带属性值
1 | // 获取元素 |
② 点语法在读取属性值时可能需要改名字,get
,setAttribute()
不需要改名字
class 改为 className
for 改为 htmlFor
colspan 改为 colSpan
rowspan 改为 rowSpan
1 | // get不需要改名,点语法可能需要改名 |
③ 点语法读取 style
,获取的是对象
,返回的是所有样式的集合
getAttribute()
读取style
获取的是字符串
1 | // 点语法得到的是style对象 get得到的是字符串 |
④ 点语法得到的是style
对象,可以继续打点调用其他的属性
getAttribute()
不能继续打点
1 | // 点语法style可以继续打点 |
1.3 CSS
操作
1.3.1 获取样式
元素对象可以通过style
获取所有样式集合对象,可以继续打点调用属性名的元素的行内样式,而不是计算后的样式
1 | .box { |
1.3.2 属性更改设置
1 | // 设置 = ,添加在行内,右侧属性值,写法和CSS属性值一样,有双引号 |
1.4 事件
事件监听:
我们计算机在解析到我们JS代码的时候,会去看某一些元素身上是否添加了事件。随时监听这些事件有没有被触发,如果触发就立即执行相应的行为。
1 | onclick 单击 |
1.4.1 单击onclick
1 | <p> |
1.4.2 双击ondblclick
1 | <p> |
1.4.3 鼠标进入onmouseenter
1 | <img src="images/nv0.jpg" alt="" id="pic"> |
1.4.4 鼠标离开 onmouseleave
1 | // 鼠标离开 恢复原图 onmouseleave |
1.4.5 鼠标按下onmousedown
1 | <a href="" id="txt">我是超级链接</a> |
1.4.6 鼠标弹起onmouseup
1 | //鼠标弹起btn,更改a的颜色,字号变大 |
1.4.7 获取焦点onfocus
1 | <p> |
1.4.8 失去焦点onblur
1 | //失去焦点 onblur img更换图片 |
1.4.9 加载完毕之后onload
JS语句要书写在所有的标签最后,标签加载完毕之后,JS语句才执行。
如果JS语句书写在标签之前,JS先加载,html标签还没有加载完毕,我们没办法获取元素。
1 | </style> |
如果书写了onload
事件,表示JS在所有标签加载完毕之后才执行事件内部的语句。
调用对象只能是window
1 | </style> |