Web API-事件基础
1. Web API 介绍
1.1 API 概念
API(Application Programming Interface)应用程序编程接口
概念:是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,无需理解其内部工作机制细节,只需直接调用使用即可
理解:API 是给程序员提供的一种工具,以便能更轻松的完成想要的功能
1.2 Web API 概念
Web API 是浏览器提供的一套操作浏览器功能和页面元素的( BOM 和 DOM ),对浏览器做交互效果的
Web API 特指浏览器提供的一系列API(很多函数或对象方法),即操作网页的一系列工具
例如:操作html标签、操作页面地址的方法
1.3 Web API 和 JS 基础关联性
JS 基础学习 ECMAScript 基础语法为后面做铺垫,Web API 是 JS 的应用,大量使用 JS 基础语法做交互效果
1.4 API 和 Web API 总结
-
API 是为程序员提供的一个接口,可以实现某种功能,会使用就可以了,不必纠结内部如何实现
-
Web API 主要是针对于浏览器提供的接口,主要针对于浏览器做交互效果
-
Web API 一般都有输入和输出(函数的传参和返回值),Web API 很多都是方法(函数)
-
学习 Web API 可以结合前面学习内置对象方法的思路学习
2. DOM 介绍
文档对象模型(Document Object Model,简称DOM)
是 W3C 组织推荐的处理可扩展标记语言(html或者xhtml)的标准编程接口,W3C 已经定义了一系列的 DOM 接口,通过这些 DOM 接口可以改变网页的内容、结构、样式
DOM是W3C组织制定的一套处理 html 和 xml 文档的规范,所有的浏览器都遵循了这套标准
2.1 DOM树
DOM树又称为文档树模型,把文档映射成树形结构,通过节点对象对其处理,处理的结果可以加入到当前的页面
- 文档(document):一个页面就是一个文档
- 节点(node):网页中的所有内容,在文档树中都是节点(标签、属性、文本、注释等)
- 标签节点(element):网页中的所有标签,通称为元素节点,简称“元素”
注意:DOM 把以上内容都看做是对象
3. 获取元素
想要操作页面上的某部分(显示 / 隐藏,动画),需要先获取到该部分对应的元素,再对其进行操作
3.1 ID 获取元素
语法:document.getElementById('id')
参数:id值,区分大小写的字符串
返回值:元素对象 或 null
例:var a = document.getElementById('a');
3.2 标签名获取元素
语法:document.getElementsByTagName('标签名')
返回值:元素对象集合(伪数组,数组元素是元素对象)
注意:获取的是一个对象的集合(动态),要操作元素就需要遍历
例:var a = document.getElementsByTagName('a');
3.3 H5新增获取元素
-
根据类名返回元素对象集合:
document.getElementsByClassName('类名');
-
返回指定选择器返回第一个元素对象:
document.querySelector('选择器');
-
返回指定选择器内的所有元素对象集合:
document.querySelectorAll('li');
注意:querySelector 和 querySelectorAll 里的选择器需要加符号
例:document.querySelector('#nav');
(指定id选择器)
3.4 获取特殊元素(body,html)
返回为元素对象
- 获取 body 元素:
doucunnet.body
- 获取 html 元素:
document.documentElement
4. 事件基础
4.1. 事件概述
JavaScript 能创建动态页面,事件是可以被 JavaScript 侦测到的行为
简单理解: 触发响应机制
网页中的每个元素都可以产生某些可以触发 JavaScript 的事件
例如:在用户点击某按钮时产生一个事件,然后去执行某些操作
4.2. 事件三要素
- 事件源(谁):触发事件的元素
- 事件类型(什么事): 例如 click 点击事件
- 事件处理程序(做点啥):事件触发后要执行的代码(函数形式)
4.3. 执行事件的步骤
- 获取事件源
- 注册事件(绑定事件)
- 添加事件处理程序(采取函数赋值形式)
<div>123</div>
<script>
// 点击div 控制台输出 我被选中了
// 1. 获取事件源
var div = document.querySelector('div');
// 2.绑定事件 注册事件 div.onclick
// 3.添加事件处理程序
div.onclick = function() {
console.log('我被选中了');
}
</script>
4.4. 常见的鼠标事件
鼠标事件 | 触发条件 |
---|---|
onclick | 鼠标点击左继触发 |
onmouseenter / leave | 鼠标经过 / 离开触发(仅自身) |
onmouseover / out | 鼠标经过 / 离开触发(会冒泡) |
onmousemove | 鼠标移动触发 |
onmouseup | 鼠标弹起触发 |
onmousedown | 鼠标按下触发 |
onfocus | 获得鼠标焦点触发 |
onblur | 失去鼠标焦点触发 |
mouseenter 和 mouseover 的区别
- mouseover 鼠标经过自身盒子会触发,经过子盒子还会触发
- mouseenter 只会经过自身盒子触发,经过子盒子不会触发
- 因为 mouseenter 不会冒泡,mouseover 会冒泡
- 跟 mouseenter 搭配鼠标离开 mouseleave 同样不会冒泡
5. 操作元素
JavaScript 的 DOM 操作可以改变网页内容、结构和样式,可以利用 DOM 操作元素来改变元素里面的内容、属性等
注意:这些操作都是通过元素对象的属性实现的
5.1. 读写元素内容
- innerText(非标准)
- 去除内容中的空格和换行
- 不会识别内容中的 html
- innerHTML(w3c标准)
- 保留内容中的空格和换行
- 可以识别内容中的 html
<div></div>
<p>
文字
<span></span>
</p>
<script>
// 1. innerText 不识别html标签 (非标准)
var div = document.querySelector('div');
// div.innerText = '<b>今年是:</b>2020';
// 2. innerHTML 识别html标签(w3c标准)
div.innerHTML = '<b>今年是:</b>2020';
// 3. 他们可读写
var p = document.querySelector('p');
console.log(p.innerText); // 去除空格和换行
console.log(p.innerHTML); // 保留空格和换行
</script>
5.2. 常用元素的属性操作
-
获取属性的值:
元素对象.属性名
-
设置属性的值:
元素对象.属性名 = 值
<button id="tiger">老虎</button>
<button id="cat">猫</button>
<img src="images/tiger.jpg" title="老虎">
<script>
// 1. 获取元素属性
var tiger = document.getElementById('tiger');
var cat = document.getElementById('cat');
var img = document.querySelector('img');
cat.onclick = function() {
img.src = 'images/cat.jpg';
img.title = '猫';
}
tiger.onclick = function() {
img.src = 'images/tiger.jpg';
img.title = '老虎';
}
</script>
5.3 表单元素的属性操作
利用 DOM 可以操作如下表单元素的属性:type
,value
,checked
,selected
,disabled
(后三个返回值布尔型)
- 获取属性的值:
元素对象.属性名
- 设置属性的值:
元素对象.属性名 = 值
<button>按钮</button>
<input type="text" value="输入内容">
<script>
// 1. 获取元素
var btn = document.querySelector('button');
var input = document.querySelector('input');
// 2. 注册事件 处理程序
btn.onclick = function() {
input.value = '被点击了';
// disabled 禁用某个表单
// btn.disabled = true;
// this 指向的是事件函数的调用者
this.disabled = true; // 等价上一行
}
</script>
5.4 样式属性操作
我们可以通过 JS 修改元素的大小、颜色、位置等样式
(1) 通过操作 style 属性
元素对象的 style 属性也是一个对象
语法:元素对象.style.样式属性 = 值;
-
Js 里面的样式采取驼峰命名法比如:fontSize
-
Js 修改 style 样式操作,产生的是行内样式,css 权重较高
// div.style 等效
this.style.backgroundColor = 'purple';
this.style.width = '250px';
(2) 通过操作 className 属性
如果样式修改较多,可以采取操作类名方式更改元素样式
className会直接更改元素的类名,会覆盖原先的类名
语法:元素对象.className = 值;
-
class 是保留字,因此使用 className 来操作
-
如果想要保留原先的类名,以空格分割:
'old new'
文章版权归作者所有,未经允许请勿转载。