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

【JavaScript】合体期功法——DOM(二)

目录

  • DOM
    • 事件监听
    • 案例
      • 关闭广告
      • 随机点名
    • 事件监听版本
    • 事件类型

DOM

事件监听

事件:编程时系统内发生的动作或事情,例如用户在网页上单击一个按钮

事件监听:让程序检测是否产生事件,一旦事件触发,立即调用函数做出响应,也称为绑定事件或注册事件,如鼠标经过显示下拉菜单、点击播放轮播图等

语法:元素对象.addEventListener (' 事件类型 ', 要执行的函数)

事件监听三要素:

  • 事件源:被事件触发的 DOM 元素,需先获取该 DOM 元素
  • 事件类型:触发事件的方式,如鼠标单击(click)、鼠标经过(mouseover)等
  • 事件调用的函数:事件触发后执行的具体操作(要做的事)

代码示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <button>按钮</button>
    <script>
        // 获取按钮元素
        const button = document.querySelector('button')
        // 为按钮添加点击事件
        button.addEventListener('click', function(){
            // 弹出警告框
            alert('你点击了按钮')
        })
    </script>
</body>
</html>

结果如下:

屏幕录制 2025-03-30 212736

注意事项:

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

案例

关闭广告

代码示例:

<!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>
        .box {
            position: relative;
            width: 1000px;
            height: 200px;
            background-color: skyblue;
            margin: 100px auto;
            text-align: center;
            font-size: 50px;
            line-height: 200px;
            font-weight: 700;
        }
        .box1 {
            position: absolute;
            right: 20px;
            top: 10px;
            width: 20px;
            height: 20px;
            background-color: pink;
            text-align: center;
            line-height: 20px;
            font-size: 16px;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <div class="box">
        广告
        <div class="box1">X</div>
    </div>
    <script>
        // 获取事件源
        const box1 = document.querySelector('.box1')
        const box = document.querySelector('.box')

        // 事件侦听
        box1.addEventListener('click', function () {
            // 隐藏
            box.style.display = 'none'
        })
    </script>
</body>
</html>

结果如下:

屏幕录制 2025-03-30 214210

随机点名

代码示例:

<!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>
        let timeId
        const arr = ['张三','李四','王五','赵六','田七','宋八','周九','吴十']
        const qs = document.querySelector('.qs')
        const start = document.querySelector('.start')
        start.addEventListener('click',function () {
            timeId = setInterval(function () {
                const random = Math.floor(Math.random() * arr.length)
                //console.log(arr[random]);
                qs.innerHTML = arr[random]
            },35)
        })
        const end = document.querySelector('.end')
        end.addEventListener('click',function () {
            clearInterval(timeId)
        })
    </script>
</body>
</html>

结果如下:

屏幕录制 2025-03-30 221210

事件监听版本

DOM 发展历史

  • DOM L0:DOM 发展的第一个版本,L 代表 level
  • DOM L1:1998 年 10 月 1 日成为 W3C 推荐标准
  • DOM L2:使用 addEventListener 注册事件
  • DOM L3:在 DOM 2 级事件基础上重新定义事件,新增部分新事件类型

DOM L0
事件源.on 事件 = function (){}

DOM L2
事件源.addEventListener (事件,事件处理函数)

区别

  • on方式绑定的事件处理函数会被覆盖
  • addEventListener方式可多次绑定同一事件,支持更多事件特性,推荐使用

事件类型

鼠标事件:触发方式为鼠标触发,包含 click(鼠标点击)、mouseenter(鼠标经过)、mouseleave(鼠标离开)

焦点事件:触发与表单光标相关,包含 focus(获得焦点)、blur(失去焦点)

键盘事件:触发方式为键盘操作,包含 keydown(键盘按下触发)、keyup(键盘抬起触发)

文本事件:由表单输入触发,包含 input(用户输入事件)

代码示例:

<!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>
        div {
            width: 100px;
            height: 100px;
            background-color: skyblue;
        }
    </style>
</head>
<body>
    <div></div>
    <script>  
        const div = document.querySelector('div')  
        // 鼠标经过  
        div.addEventListener('mouseenter', function () {  
          console.log('轻轻的我来了')  
        })  
        // 鼠标离开  
        div.addEventListener('mouseleave', function () {  
          console.log('轻轻的我走了')  
        })  
      </script>  
</body>
</html>

结果如下:

相关文章:

  • Unidbg Trace 反 OLLVM 控制流平坦化(fla)
  • Linux命令-sed指令
  • notion访问慢notion卡顿怎么办,提升notion加载速度
  • Java全栈面试宝典:线程机制与Spring依赖注入深度解析
  • 图解AUTOSAR_SWS_TimeService
  • Oracle数据库数据编程SQL<递归函数详解>
  • Linux之权限问题
  • 2025普通话考试(最新)| 普通话软件 + 真题 + 测试
  • Python第六章20:函数的参数传递和匿名函数
  • NQA 网络质量分析协议
  • 哈希表 - 两个数组的交集(集合、数组) - JS
  • 华为hcia——Datacom实验指南——配置OSPF路由
  • 【Sa-Token】学习笔记 03 - 认识Sa-Token中常见类
  • Linux线程池实现
  • [吾爱出品] 防窥助手 V1.1
  • GIC硬件
  • C++_STL之list篇
  • 衡石科技HENGSHI SENSE异构数据关联技术深度解析:揭秘5-8倍性能提升背后的“异构过滤“架构
  • 第一讲 感应加热原理与感应熔炼电炉特点
  • Java抽象类:深入理解与应用