首页 > 其他分享 >DOM 高阶教程

DOM 高阶教程

时间:2022-11-21 19:01:11浏览次数:57  
标签:function 教程 DOM 事件 addEventListener div document 高阶 冒泡

注册事件 / 绑定事件

传统注册方式:

<button onclick=""></button>
btn.onclick = function() {}

特点:注册事件的唯一性

 

方法监听注册方式:

addEventLisener()

特点:同个元素可以注册多个监听器(注意,非标准也可以使用:attachEvent())

例如:

    btn.addEventListener('click', function() {
        alert(1);
    })

 

删除事件/解绑事件

传统注册方式:

btn.onclick = null

 

方法监听注册方式:

removeEventLisener()
detachEvent()

 

DOM 事件流

例如,我们给 div 添加了点击事件:

document —> html —> body —> div  // 捕获阶段
div —> body —> html —> document  // 冒泡阶段

div 被点击,那么父元素、body、html 均会被点击,会依次查找是否绑定了事件

我们可以验证,通过给父元素和子元素都添加点击事件,观察触发事件的顺序(注意,addEventListener 的第三个参数为 true ,代表处于捕获阶段,否则处于冒泡阶段)

我们更关注事件冒泡,并且有些事情是没有冒泡的,例如:onblur、onfocus、onmouseenter、onmouseleave

 

事件对象

如果在侦听函数中放入 event 参数(可以自己命名),那么它代表此事件对象,例如:

div.addEventListener('click', function(event) {
    console.log(event)
})

类似于 python 中类的 self 参数

 

事件对象的常见属性和方法

例如:e.target,返回触发事件的对象,这个和 this 是有区别的。e 一般可以理解为点击到的对象

e.type e.preventDefault() e.stopPropagation()

 

事件委托

例如,我们有一个 ul ,我们想要点击每个 li 的时候均弹出对话框,那么只需要给 ul 设置监听器即可,因为 li 没有绑定监听器,会冒泡到 ul 上

 

常用的鼠标事件

例如,禁止复制文字:

<body>
    不可复制的文字
    <script>
        document.addEventListener('contextmenu', function(e) {
            e.preventDefault()
        })
    </script>
</body>

selectstart 可以阻止选中

 

鼠标事件对象

<body>
    <script>
        document.addEventListener('click', function(e) {
            console.log(e)
        })
    </script>
</body>

e.clientX/Y 返回鼠标相对于浏览器窗口可视化区的坐标

e.pageX/Y 返回鼠标相对于文档页面的坐标

e.screenX/Y 返回鼠标相对于电脑屏幕的坐标

 

常用的键盘事件

例如:

<body>
    <script>
        document.addEventListener('keyup', function(e) {
            console.log('键盘弹起了')
        })
    </script>
</body>

keyup keydown keypress

我们可以知道用户按下了哪个键,通过查看事件的属性

标签:function,教程,DOM,事件,addEventListener,div,document,高阶,冒泡
From: https://www.cnblogs.com/daxiangcai/p/16912805.html

相关文章

  • 打字指法教程
    如下图,手指放在八个基本键上,两个拇指轻放在空格键上。二、击键要领1.手指弯曲要自然,手臂不可张开太大2.手指击键要正确,击键有适当力度,击键之后要立即回到基准键上3.空......
  • win10和win7设置教程
    win10设置教程1.点左下角齿轮这个设置2.点网络和internet 3.点dai理 4.复制粘贴发您pac结尾的链接到url里面就行,最后保存。     ================......
  • 安卓教程
    1.点击的设置按钮 2.点击WLAN右边的圆圈处的 >号3.长按圆圈处的信号按钮4.长按住5秒,在弹出页中,选择修改网络 5.选中显示高级选项,并往下拖动屏幕6.点击圆......
  • 1、Docker最新入门教程-Docker概述
    1.Docker概述Docker是一个用于开发、运输和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开,以便您可以快速交付软件。使用Docker,您可以像管理应用程......
  • mac苹果电脑设置教程
    1.在底部,点系统偏好设置按钮 2.点击图中的网络 3.选择当前Wi-Fi,在右下角,点“高级” 4.点击图中【代理】,勾选【自动代理配置】一定要勾选啊!注意:鼠标一定要点......
  • PS新手教程-如何使用PS给产品图片加上尺寸标识
    如何使用PS给产品图片加上尺寸标识?给大家介绍如何使用PS给产品图片加上尺寸标识,一起来看看吧。1.Ctrl+O指定打开图像。如下图:2.使用路径“矩形工具”快捷键l“U”,前景色为红......
  • DOM简单学习和事件简单学习
    DOM简单学习:DOM简单学习:为了满足案例要求功能∶控制html文档的内容代码:获取页面标签(元秦)对象Elementdocument.getElementById("id值"):通过元素的id获取元素对象......
  • 【详细教程】LVS+KeepAlived高可用部署实战应用
    1.构建高可用集群1.1什么是高可用集群 高可用集群(HighAvailabilityCluster,简称HACluster),是指以减少服务中断时间为目的得服务器集群技术。它通过保护用户得业务程序对......
  • JavaScript DOM 编程
    DOM-D:文档-html文档或xml文档-O:对象-document对象的属性和方法-M:模型-DOM是针对xml的基于树的API-DOM树:节点的层次-DOM把一个文档表示为一颗家谱树(父,子,......
  • 【JavaScript 教程】第六章 数组17—flatMap() :对每个元素执行映射函数并将结果展平
    英文 | https://www.javascripttutorial.net/译文|杨小爱在上节,我们学习如何使用 JavaScriptArrayflat()方法来展平数组,错过的小伙伴可以点击文章《​​【JavaScrip......