iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript的DOM事件详解
  • 469
分享到

JavaScript的DOM事件详解

2024-04-02 19:04:59 469人浏览 薄情痞子
摘要

目录1、事件对象2、事件流3、事件委托4、综合案例总结1、事件对象 【获取事件对象】 什么是事件对象:是个对象,这个对象里有事件触发时的相关信息。事件对象的语法 元素.addEven

1、事件对象

【获取事件对象】

  • 什么是事件对象:是个对象,这个对象里有事件触发时的相关信息。
  • 事件对象的语法
元素.addEventListener('click',function(e){})

【事件对象常用属性】

  • type:获取当前的事件类型
  • clientX/clientY:获取光标相对于浏览器可见窗口左上角的位置
  • offsetX/offsetY:获取光标相对于当前DOM元素左上角的位置
  • key:用户按下的键盘的值

【案例】:

<!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>Document</title>
    <style>
        img {
            position: absolute;
            top: 0;
            left: 0;
        }
    </style>
</head>
<body>
    <img src="./images/tianshi.gif" alt="">
    <script>
        let img = document.querySelector('img')
        document.addEventListener('mousemove', function (e) {
            img.style.top = e.pageY-40 + 'px'
            img.style.left = e.pageX-50 + 'px'
        })
    </script>
</body>
</html>

2、事件流

【解释】: 事件流是指事件完整执行过程中的流动路径

【图解】:

请添加图片描述

【说明】:

  • 捕获阶段是从父到子
  • 冒泡阶段是从子到父

【什么是事件冒泡】 :当一个元素的事件被触发时,同样的事件将会在该元素的所有祖先元素中依次被触发。

事件冒泡是默认存在的。

【案例解释】

<!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>Document</title>
    <style>
        .father {
            margin: 100px auto;
            width: 500px;
            height: 500px;
            background-color: pink;
        }
        .son {
            width: 200px;
            height: 200px;
            background-color: purple;
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="son"></div>
    </div>
    <script>
        let fa = document.querySelector('.father')
        let son = document.querySelector('.son')
        fa.addEventListener('click', function () {
            alert('我是爸爸')
        }, true)
        son.addEventListener('click', function () {
            alert('我是儿子')
        }, true)
        document.addEventListener('click', function () {
            alert('我是爷爷')
        }, true)
        // btn.onclick = function() {}
    </script>
</body>
</html>

【事件捕获概念】: 从DOM的根元素开始去执行对应的事件。

【语法】

DOM.addEventListener(事件类型,事件处理函数,是否使用捕获机制)

【说明】

  • addEventListener第三个参数传入true代表是捕获阶段触发
  • 若传入false代表冒泡阶段触发,默认就是false
  • 原来的写法没有捕获只有冒泡阶段

【阻止事件的流动】

语法:

事件对象.stopProPagation()

说明:

  • 阻止事件的流动,在捕获和冒泡阶段都有效
  • mouseover 和 mouseout 会有冒泡效果
  • mouseenter 和 mouseleave 没有冒泡效果(推荐)

【阻止事件的默认行为】

语法:

e.preventDefault()

3、事件委托

【解释】: 将事件委托于其他元素进行处理。

【优点】: 给父级元素添加事件可以极大的优化性能

【原理】: 利用事件冒泡的特点,给父级元素添加事件,子元素可以触发

【语法】: 事件对象.target可以获取得到真正触发事件的元素

4、综合案例

**【需求】:**点击录入按钮,可以增加学生信息

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <link rel="stylesheet" href="CSS/user.css">
</head>
<body>
  <h1>新增学员</h1>
  <div class="info">
    姓名:<input type="text" class="uname">
    年龄:<input type="text" class="age">
    性别: <select name="gender" id="" class="gender">
      <option value="男">男</option>
      <option value="女">女</option>
    </select>
    薪资:<input type="text" class="salary">
    就业城市:<select name="city" id="" class="city">
      <option value="北京">北京</option>
      <option value="上海">上海</option>
      <option value="广州">广州</option>
      <option value="深圳">深圳</option>
      <option value="曹县">曹县</option>
    </select>
    <button class="add">录入</button>
  </div>
  <h1>就业榜</h1>
  <table>
    <thead>
      <tr>
        <th>学号</th>
        <th>姓名</th>
        <th>年龄</th>
        <th>性别</th>
        <th>薪资</th>
        <th>就业城市</th>
        <th>操作</th>
      </tr>
    </thead>
    <tbody>
    </tbody>
  </table>
  <script>
    //准备好数据后端的数据
    let arr = [
      { stuId: 1001, uname: '欧阳霸天', age: 19, gender: '男', salary: '20000', city: '上海' },
      { stuId: 1002, uname: '令狐霸天', age: 29, gender: '男', salary: '30000', city: '北京' },
      { stuId: 1003, uname: '诸葛霸天', age: 39, gender: '男', salary: '2000', city: '北京' },
    ]
    // 获取元素
    let tbody = document.querySelector('tbody');
    // 获取录入按钮
    let add = document.querySelector('.add');
    // 获取表单元素
    let uname = document.querySelector('.uname')
    let age = document.querySelector('.age')
    let gender = document.querySelector('.gender')
    let salary = document.querySelector('.salary')
    let city = document.querySelector('.city')
    // 封装渲染数据的函数
    function render() {
      // 清空原来的数据
      tbody.innerHTML = ''
      for (let i = 0; i < arr.length; i++) {
        // 创建tr
        let tr = document.createElement('tr');
        // 添加数据
        tr.innerHTML = `
        <td>${arr[i].stuId}</td>
        <td>${arr[i].uname}</td>
        <td>${arr[i].age}</td>
        <td>${arr[i].gender}</td>
        <td>${arr[i].salary}</td>
        <td>${arr[i].city}</td>
        <td>
          <a href="javascript:" id=${i}>删除</a>
        </td>
        `
        tbody.appendChild(tr)
        // 复原表单数据
        uname.value = age.value = salary.value = ''
      }
    }
    // 调用页面加载函数
    render();
    // 添加数据操作
    add.addEventListener('click', function () {
      // 获取表单的数据 添加到数组
      arr.push({
        stuId: arr[arr.length - 1].stuId + 1,
        uname: uname.value,
        age: age.value,
        gender: gender.value,
        salary: salary.value,
        city: city.value
      })
      render();
    })
    // 删除操作
    tbody.addEventListener('click', function (e) {
      if (e.target.tagName === 'A') {
        arr.splice(e.target.id, 1)
        render()
      }
    })
  </script>
</body>
</html>

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!  

--结束END--

本文标题: JavaScript的DOM事件详解

本文链接: https://www.lsjlt.com/news/138916.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript的DOM事件详解
    目录1、事件对象2、事件流3、事件委托4、综合案例总结1、事件对象 【获取事件对象】 什么是事件对象:是个对象,这个对象里有事件触发时的相关信息。事件对象的语法 元素.addEven...
    99+
    2024-04-02
  • JavaScript中BOM,DOM和事件的用法详解
    目录BOM概念对象组成Window:窗口对象Location:地址栏对象History:历史记录对象DOM概念W3C DOM 标准被分为 3 个不同的部分核心DOM模型HTML DO...
    99+
    2024-04-02
  • javascript的dom事件有哪些
    javascript中的dom事件有:1.onload,进入页面;2.onunload,退出页面;3.oncontextmenu,单击鼠标右键;4.onsubmit,表单提交;javascript中的dom事件有以下几种onloadjava...
    99+
    2024-04-02
  • JavaScript WebAPI、DOM、事件和操作元素实例详解
    目录WebAPIDOMDOM树DOM获取元素方式document对象属性事件事件的使用步骤事件的类型操作元素操作元素内容操作元素属性操作元素样式排他思想H5自定义属性总结WebAPI...
    99+
    2024-04-02
  • javascript DOM事件是什么
    这篇文章主要讲解了“javascript DOM事件是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript DOM事件是什么”吧!DOM级...
    99+
    2024-04-02
  • javascript中有哪些dom事件
    这篇文章主要介绍“javascript中有哪些dom事件”,在日常操作中,相信很多人在javascript中有哪些dom事件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ja...
    99+
    2024-04-02
  • JavaScript中DOM事件的示例分析
    这篇文章主要介绍了JavaScript中DOM事件的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、事件对象【获取事件对象】什么是事件对象:是个对象,这个对象里有事...
    99+
    2023-06-29
  • Javascript虚拟DOM详解
    目录什么是虚拟 dom?为什么需要虚拟dom?虚拟dom是如何转换为真实dom的?模板和虚拟dom的关系注入挂载完整流程总结 什么是虚拟 dom? 虚拟 dom 本质上就是一个普通的...
    99+
    2024-04-02
  • JavaScript DOM常用事件实例分析
    本篇内容介绍了“JavaScript DOM常用事件实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2024-04-02
  • 详解JavaScript事件循环
    目录一、事件循环的执行过程二、事件循环进阶用法三、JavaScript任务类型3.1 同步任务&异步任务3.2 宏任务&微任务JavaScript事件循环是一种机制,...
    99+
    2023-05-16
    JavaScript事件循环 JavaScript循环
  • JavaScript中BOM和DOM详解
    目录BOM(浏览器对象模型) 1. window 获取浏览器c窗口尺寸 2. screen 获取电脑屏幕大小 3. window 开启关闭窗口 4. 浏览器事件 5. locatio...
    99+
    2024-04-02
  • JavaScript DOMContentLoaded事件案例详解
    DOMContentLoaded 事件 字面上看,它会在dom加载完成后触发。 与window.onload事件非常相似,但有一定区别: DOMContentLoaded ...
    99+
    2024-04-02
  • JavaScript onblur与onfocus事件详解
            html页面中,诸如按钮、文本框等可视元素都具有拥有和失去焦点的事件,这些事件在响应鼠标或键盘动作时都可激发预设的操作。本文以...
    99+
    2024-04-02
  • JavaScript中BOM,DOM和事件怎么使用
    这篇文章主要介绍“JavaScript中BOM,DOM和事件怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript中BOM,DOM和事件怎么使用”文章能帮助大家解决问题。BOM概...
    99+
    2023-07-02
  • JavaScript中怎么利用DOM添加事件
    这期内容当中小编将会给大家带来有关JavaScript中怎么利用DOM添加事件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。JavaScript DOM添加事件这是我在给...
    99+
    2024-04-02
  • JavaScript中DOM操作常用事件总结
    目录常用事件演示得到焦点和失去焦点演示 鼠标划过和离开点击事件load加载页面事件onkeyup 键盘弹起事件内容变化事件选中时触发上一篇聊了如何同JavaScript获得页面元素,...
    99+
    2024-04-02
  • JavaScript操作DOM对象详解
    一、DOM基础 DOM(Document Object Model)即文档对象模型,针对HTML和XML文档的API(应用程序接口)。DOM描绘了一个层次化的节点树,运行开发人员添加...
    99+
    2024-04-02
  • 探索JavaScript事件流:DOM中的神奇旅程
     🎬 江城开朗的豌豆:个人主页  🔥 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 引言 1. 事件流的发展流程 1.1 传统的DOM0级事件 ...
    99+
    2023-10-08
    javascript 开发语言 前端 原力计划
  • javascript事件冒泡,事件捕获和事件委托详解
    1、事件冒泡:在javascript事件传播过程中,当事件在一个元素上出发之后,事件会逐级传播给先辈元素,直到document为止,有的浏览器可能到window为止。并不是所有的事件...
    99+
    2024-04-02
  • JavaScript中事件委托的示例详解
    目录事件流事件委托结尾大家好,我是前端西瓜哥。今天我们来认识一下事件委托。 所谓事件委托,就是将原本应该在当前元素绑定的事件,放到它的祖先元素上,让祖先元素来委托处理。 事件流 事件...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作