Web APIs -第二天
掌握事件绑定处理和事件对象,完成常见网页交互
- 事件监听
- 事件类型
- 事件对象
- 拓展知识
- 综合案例

事件监听
以前写的代码都是自动执行的,我们希望一段代码在某个特定的时机才去执行,比如
- 点击按钮可以弹出警示框
- 比如鼠标经过显示下拉菜单等等
事件
事件是程序在运行的时候,发生的特定动作或者特定的事情
- 比如
点击按钮、 - 比如
鼠标经过菜单等等
通常,当事件发生时,可以做些事情
- 比如点击按钮,可以
弹出警示框 - 比如鼠标经过某个盒子,可以
显示下拉菜单
事件监听
事件发生后,想要执行的代码写到事件处理函数里面
- 当触发指定的事件时,则事件处理函数就会被执行
- 事件监听是将事件处理函数注册到元素对象身上
- 事件监听也称为: 事件注册、事件绑定
语法:
元素对象.addEventListener('事件类型', 事件处理函数)
事件监听三要素
- 事件源(谁被触发了)
- 事件类型 (什么情况下触发,点击还是鼠标经过等)
- 事件处理函数(要做什么事情)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>事件监听</title>
</head>
<body>
<button class="btn">唐伯虎</button>
<script>
// 需求: 点击button按钮,页面会弹出一个警示框,内容显示 '秋香'
// 事件监听语法:
// 元素对象.addEventListener('事件类型', 事件处理函数)
// 1. 获取元素对象 button按钮
const btn = document.querySelector('.btn')
// 2. 事件监听
btn.addEventListener('click', function () {
alert('秋香')
})
</script>
</body>
</html>
注意:
1.事件类型要加引号,小写
2.函数是点击之后再去执行,每次点击都会执行一次
回调函数
**回调函数:**当一个函数当做参数来传递给另外一个函 数的时候,这个函数就是回调函数(回头调用的函数)
**作用:**完成某些特定任务
<script>
// 1. 定时器间隔函数,里面第一个参数又是函数,这个匿名函数就是回调函数
setInterval(function () {
console.log('我是回调函数')
}, 1000)
// 2. addEventListener 函数的第二个参数也是函数,这个匿名函数也是回调函数
btn.addEventListener('click', function () {
console.log('我是回调函数')
})
</script>
事件监听版本
-
DOM0 事件
事件源.on事件类型 = function() { }
btn.onclick = function () {
alert('我是弹窗1')
} -
DOM 2事件
事件源.addEventListener(事件类型,事件处理函数)
btn.addEventListener('click', function () {
console.log('我是回调函数')
})
区别:
on 方式同名事件会被覆盖,addEventListener则不会,同时拥有事件更多特性,推荐使用
事件类型
将众多的事件类型分类可分为:鼠标事件、键盘事件、表单事件、焦点事件等,我们逐一展开学习。
事件类型的大小写敏感的字符串,统一用小写字母

鼠标事件
鼠标事件是指跟鼠标操作相关的事件,如单击、经过等。
<body>
<div class="box"></div>
<script>
// 鼠标事件类型
const box = document.querySelector('.box')
// 1. 鼠标点击
box.addEventListener('click', function () {
console.log('我点击了盒子')
})
// 2. 鼠标经过
box.addEventListener('mouseenter', function () {
console.log('我鼠标经过了盒子')
})
// 3. 鼠标离开
box.addEventListener('mouseleave', function () {
console.log('我鼠标离开了盒子')
})
</script>
</body>
焦点事件
主要是针对于表单是否获得光标的事件, 获得焦点 focus 、失去焦点 blur
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>焦点事件</title>
<style>
[type=text] {
width: 245px;
height: 50px;
padding-left: 20px;
border: 1px solid #ccc;
font-size: 17px;
outline: none;
}
</style>
</head>
<body>
<input type="text" class="search-text">
<input type="text" class="search">
<script>
// 1. 焦点事件(手动触发)
const search_text = document.querySelector('.search-text')
// 1.1 获得焦点 focus
search_text.addEventListener('focus', function () {
console.log('获得了焦点')
})
// 1.2 失去焦点 blur
search_text.addEventListener('blur', function () {
console.log('失去了焦点')
})
// 2. 拓展 自动获得焦点 focus() 自动失去焦点 blur()
// 2.1 语法: 元素.focus() 比如百度首页搜索框自动获得焦点
const search = document.querySelector('.search')
search.focus()
</script>
</body>
</html>