当前位置: 首页 > news >正文

【Web API DOM03】事件监听

一:什么是事件监听

指程序检测有无某一事件发生,如果发生,就调用一个函数做出反应;也称为绑定事件或注册事件

比如鼠标经过显示下拉菜单、点击侧边栏播放轮播图

二:怎么用事件监听

1 语法规范:

元素对象.addEventListener('事件类型',要执行函数(匿名函数))

2 注意点:

  • 事件类型要加引号
  • 函数是事件触发之后再去执行,每次触发都会执行一次

三:案例

1 点击关闭按钮,实现广告关闭效果

<style>.box1 {width: 300px;height: 300px;background-color: pink;position: relative;}.box2 {position: absolute;width: 40px;height: 40px;right: 0;top: 0;line-height: 40px;text-align: center;}
</style>
<body><div class="box1">广告<div class="box2">X</div></div><script>const box1 = document.querySelector('.box1')const box2 = document.querySelector('.box2')box2.addEventListener('click', function () {box1.style.display = 'none'})</script>
</body>

2 随机点名案例

1 拆解需求:

  • 点击开始按钮
    • 选人,涉及随机数生成问题(Math.floor(Math.random() * arr.length))
    • 删除选中的人(数组splice()方法)
  • 结束按钮
    • 停止选人(牵涉全局变量与局部变量问题)
  • 选到最后一个人
    • 如果数组中还剩最后一个人,则禁用两个按钮

2 代码:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>* {margin: 0;padding: 0;}h2 {text-align: center;}.box {width: 600px;margin: 50px auto;display: flex;font-size: 25px;line-height: 40px;}.qs {width: 450px;height: 40px;color: red;}.btns {text-align: center;}.btns button {width: 120px;height: 35px;margin: 0 50px;}</style>
</head>
<body><h2>随机点名</h2><div class="box"><span>名字是:</span><div class="qs">这里显示姓名</div></div><div class="btns"><button class="start">开始</button><button class="end">结束</button></div><script>// 数据数组const arr = ['马超', '黄忠', '周瑜']//设定变量为全局变量,以便于后期的调用let timer = 0//随机号为全局变量let num = 0// 1 获取元素const qs = document.querySelector('.qs')const start = document.querySelector('.start')const end = document.querySelector('.end')// 2 点击按钮,开启一个定时器;产生一个随机数;将数组中的内容显示到页面上start.addEventListener('click', function () {timer = setInterval(function () {num = Math.floor(Math.random() * arr.length)qs.innerHTML = arr[num]}, 35)// 4 抽取到最后一个数组元素,两个按钮同时禁用if (arr.length == 1) {start.disabled = trueend.disabled = true}})// 3 点击结束按钮,关闭定时器end.addEventListener('click', function () {clearInterval(timer)arr.splice(num, 1)console.log(arr);if (arr.length == 1) {start.disabled = trueend.disabled = true}})</script>
</body>
</html>

相关文章:

  • VRRP
  • 创新指南|领导者如何评估自己的表现——麦肯锡专有的CEO卓越评估工具
  • 淘宝api接口是什么意思?api接口申请资格是什么?
  • echarts绘制三维柱状图
  • WordPress中借助Table of Contents Plus+Widget Options插件,实现仅在文章侧边栏显示文章目录的功能
  • Ubuntu server 24 (Linux) IPtables 双网卡 共享上网NAT 安装配置DHCP
  • Lambda 表达式练习
  • iOS hitTest 机制用处之二-----使用pointInside方法
  • Flutter 中的 SliverCrossAxisExpanded 小部件:全面指南
  • 零基础入门篇①⑥ Python可变序列类型--字典
  • Webrtc支持HEVC之FFMPEG支持HEVC编解码(一)
  • 【Python如何将EXCEL拆分】
  • 精准检测,安全无忧:安全阀检测实践指南
  • 单片机控制语音芯片的录放音系统的设计
  • C语言之旅:探索单链表
  • Google 是如何开发 Web 框架的
  • 10个确保微服务与容器安全的最佳实践
  • Angular Elements 及其运作原理
  • Apache Spark Streaming 使用实例
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • docker容器内的网络抓包
  • Magento 1.x 中文订单打印乱码
  • MQ框架的比较
  • Mysql数据库的条件查询语句
  • October CMS - 快速入门 9 Images And Galleries
  • React16时代,该用什么姿势写 React ?
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • select2 取值 遍历 设置默认值
  • text-decoration与color属性
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 讲清楚之javascript作用域
  • 手机端车牌号码键盘的vue组件
  • 微信公众号开发小记——5.python微信红包
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • #pragma once与条件编译
  • #图像处理
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (五)Python 垃圾回收机制
  • (一)SpringBoot3---尚硅谷总结
  • (转)EXC_BREAKPOINT僵尸错误
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET DataGridView数据绑定说明
  • .NET Framework 4.6.2改进了WPF和安全性
  • .Net Remoting常用部署结构
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .NET上SQLite的连接
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • @Pointcut 使用
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504
  • [10] CUDA程序性能的提升 与 流
  • [17]JAVAEE-HTTP协议
  • [ACTF2020 新生赛]Include