WebAPIs
1.1. Web API介绍
1.1.1 API的概念
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,无需理解其内部工作机制细节,只需直接调用使用即可
举例解释什么是API
例如,
C语言中有一个函数 fopen()可以打开硬盘上的文件,这个函数对于我们来说,就是一个C语言提供的打开文件的工具。
javascript中有一个函数alert()可以在页面弹一个提示框,这个函数就是js提供的一个弹框工具。
这些工具(函数)由编程语言提供,内部的实现已经封装好了,我们只要学会灵活的使用这些工具即可。
1.1.2 Web API的概念
Web API 是浏览器提供的一套操作浏览器功能和页面元素的 API ( BOM 和 DOM )。
现阶段我们主要针对于浏览器讲解常用的 API , 主要针对浏览器做交互效果。比如我们想要浏览器弹出一个警示框, 直接使用 alert(‘弹出’)
MDN 详细 API : https://developer.mozilla.org/zh-CN/docs/Web/API
因为 Web API 很多,所以我们将这个阶段称为 Web APIs。
此处的 Web API 特指浏览器提供的一系列API(很多函数或对象方法),即操作网页的一系列工具。例如:操作html标签、操作页面地址的方法。
1.1.3 API 和 Web API 总结
- API 是为我们程序员提供的一个接口,帮助我们实现某种功能,我们会使用就可以了,不必纠结内部如何实现
- Web API 主要是针对于浏览器提供的接口,主要针对于浏览器做交互效果。
- Web API 一般都有输入和输出(函数的传参和返回值),Web API 很多都是方法(函数)
- 学习 Web API 可以结合前面学习内置对象方法的思路学习
1.2. DOM 介绍
1.2.1 什么是DOM
文档对象模型(Document Object Model,简称DOM),是 [W3C](https://baike.baidu.com/item/W3C) 组织推荐的处理[可扩展标记语言](https://baike.baidu.com/item/%E5%8F%AF%E6%89%A9%E5%B1%95%E7%BD%AE%E6%A0%87%E8%AF%AD%E8%A8%80)(html或者xhtml)的标准[编程接口](https://baike.baidu.com/item/%E7%BC%96%E7%A8%8B%E6%8E%A5%E5%8F%A3)。
W3C 已经定义了一系列的 DOM 接口,通过这些 DOM 接口可以改变网页的内容、结构和样式。
DOM是W3C组织制定的一套处理 html和xml文档的规范,所有的浏览器都遵循了这套标准。
1.2.2. DOM树

DOM树 又称为文档树模型,把文档映射成树形结构,通过节点对象对其处理,处理的结果可以加入到当前的页面。
- 文档:一个页面就是一个文档,DOM中使用document表示
- 节点:网页中的所有内容,在文档树中都是节点(标签、属性、文本、注释等),使用node表示
- 标签节点:网页中的所有标签,通常称为元素节点,又简称为“元素”,使用element表示
1.3. 获取元素
为什么要获取页面元素?
例如:我们想要操作页面上的某部分(显示/隐藏,动画),需要先获取到该部分对应的元素,再对其进行操作。
1.3.1. 根据ID获取
语法:document.getElementById(id)
作用:根据ID获取元素对象
参数:id值,区分大小写的字符串
返回值:元素对象 或 null
案例代码
2019-9-9
1.3.2. 根据标签名获取元素
语法:document.getElementsByTagName('标签名') 或者 element.getElementsByTagName('标签名')
作用:根据标签名获取元素对象
参数:标签名
返回值:元素对象集合(伪数组,数组元素是元素对象)
案例代码
- 知否知否,应是等你好久11
- 知否知否,应是等你好久22
- 知否知否,应是等你好久33
- 知否知否,应是等你好久44
- 知否知否,应是等你好久55
注意:
1.因为得到的是一个对象的集合,所以我们想要操作里面的元素就需要遍历;
2.得到元素对象是动态的
注意:getElementsByTagName()获取到是动态集合,即:当页面增加了标签,这个集合中也就增加了元素
1.3.3. H5新增获取元素方式
1. document.getElementsByClassName('类名'); //根据类名返回元素对象集合
2. document.querySelector('选择器');// 根据指定选择器返回第一个元素对象
3. document.querySelectorAll('选择器');// 根据指定选择器返回
注意:
querySelector和querySelectorAll里面的选择器需要加符号,比如:document.querySelector("#nav");
代码案例
盒子1
盒子2
1.3.4 获取特殊元素(body,html)
获取body 元素
document.body // 返回body元素对象
获取html 元素
document.documentElement // 返回html元素对象
1.4. 事件基础
1.4.1. 事件概述
JavaScript 使我们有能力创建动态页面,而事件是可以被 JavaScript 侦测到的行为。
简单理解: 触发--- 响应机制。
网页中的每个元素都可以产生某些可以触发 JavaScript 的事件,例如,我们可以在用户点击某按钮时产生一个 事件,然后去执行某些操作。
1.4.2. 事件三要素
- 事件源(谁):触发事件的元素
- 事件类型(什么事件): 例如 click 点击事件
- 事件处理程序(做啥):事件触发后要执行的代码(函数形式),事件处理函数
案例代码
1.4.3. 执行事件的步骤
1.获取事件源
2.注册事件(绑定事件)
3.添加事件处理程序(采取函数赋值形式)
案例代码
123
1.4.4. 常见的鼠标事件
| 鼠标事件 | 触发条件 |
|---|---|
| onclick | 鼠标点击左键触发 |
| onmouseover | 鼠标经过触发 |
| onmouseout | 鼠标离开触发 |
| onfocus | 获得鼠标焦点触发 |
| onblur | 失去鼠标焦点触发 |
| onmousemove | 鼠标移动触发 |
| onmouseup | 鼠标弹起触发 |
| onmousedown | 鼠标按下触发 |
1.4.5. 分析事件三要素
- 下拉菜单三要素
- 关闭广告三要素
1.5. 操作元素
JavaScript的 DOM 操作可以改变网页内容、结构和样式,我们可以利用 DOM 操作元素来改变元素里面的内容、属性等。(注意:这些操作都是通过元素对象的属性实现的)
1.5.1. 改变元素内容(获取或设置)
element.innerText
从起始位置到终止位置的内容,但它去除html标签,同时空格和换行也会去掉
element.innerHTML
起始位置到终止位置的全部内容,包括html标签,同时保留空格和换行
innerText改变元素内容
某个时间
1123
innerText和innerHTML的区别
-
获取内容时的区别:
innerText会去除空格和换行,而innerHTML会保留空格和换行
-
设置内容时的区别:
innerText不会识别html,而innerHTML会识别
代码案例
我是文字
123
1.5.2. 常用元素的属性操作
1. innerText , innerHTML 改变元素内容
2. src , href
3. id , alt , title
获取属性的值
元素对象.属性名
设置属性的值
元素对象.属性名 = 值
案例代码
1.5.3. 案例:分时问候

上午好
1.5.4. 表单元素的属性操作
利用DOM可以操作如下表单元素的属性:
type , value , checked , selected , disabled
获取属性的值
元素对象.属性名
设置属性的值
元素对象.属性名= 值
表单元素中有一些属性如:disabled , checked , selected ,元素对象的这些属性的值是布尔型
案例代码
1.5.5. 案例:仿京东显示密码

代码
1.5.6. 样式属性操作
我们可以通过 JS 修改元素的大小、颜色、位置等样式。
常用的方式
1. element.style 行内样式操作
2. element.className 类名样式操作
方式1:通过操作style属性
元素对象的style属性也是一个对象!元素对象.style.样式属性 = 值;
注意:
1.JS里面的样式采取驼峰命名法,比如 fontSize , backgroundColor
2.JS修改style样式操作,产生的是行内样式,CSS权重比较高
案例代码
方式2:通过操作className属性
元素对象.className = 值;
因为class是关键字,所有使用className。
注意:
1.如果修改样式比较多的话,可以采取操作类名方式更改元素样式
2.class因为是保留字,因此使用className来操作元素类名属性
3.className 会直接更改元素的类名,会覆盖原先的类名
案例代码
文本

1.6. 今日总结
