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

dom节点操作方法与事件冒泡总结

文章目录

  • DOM节点操作
  • 事件冒泡


DOM节点操作

dom树也就是由html标签之间的关系结构组成的树,如图
在这里插入图片描述
对其中的节点进行操作,如增删改查js都有对应的方法
从当前节点获得其父,子,兄弟节点

  1. 父节点
    nowelement.parentNode为nowelement的父节点
  2. 子节点
    nowelement.children为nowelement所有子节点
    是一个伪数组,类似querySelectorAll()
  3. 兄弟节点
    nowelement.previousElementSibling为nowelement的上一个并列节点
    nowelement.nextElementSibling为nowelement的下一个并列节点
    以上方法在找不到对应节点时值为null
    节点的增删

  4. 先使用document.createElement('标签名')得到一个新的对应的标签对象,用newnode接收
    则有如下添加方法
    父.appendChild(newnode)将新节点加在父元素的末尾
    父.insertBefore(newnode, 参考节点)将新节点加到参考节点之前
    还可以通过复制得到新的节点
    原节点.cloneNode(true/false)true时会包含其子节点,反之
    由于内容也算一个节点,故为flase时并不会复制其中内容,而是像创建了一个与源节点标签名相同的新节点

  5. 删除只能通过父节点来删除
    父.removeChild(子节点)

事件冒泡

事件冒泡是指当某个元素上的事件被触发时,该事件会向父级元素传递,直到传递到 document 对象的过程。在此过程中,所有绑定在这些父级元素上的相同类型的事件处理程序都会依次被触发。
举例如a是b的父元素,当b的一种事件发生后,触发事件监听的函数,则a对应的函数也会触发

利用事件冒泡
在之前,要监听多个元素的事件要用for循环来逐个添加较为麻烦
利用此机制可以给父元素设置监听,当子元素触发时就会自动转为父元素的函数触发
如下

<!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><!-- 对于同时给多个元素注册事件,(以往使用的循环注册)可以给父级设即可--><br><ul><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul><script>const ul=document.querySelector(`ul`)ul.addEventListener('click',function(e){e.target.style.color='blue';})</script>
</body>
</html>

若想要取消父元素也会触发则检测触发对象的tagname是否为子元素即可


文章转载自:
http://authorless.wsgyq.cn
http://auxotrophic.wsgyq.cn
http://autobiography.wsgyq.cn
http://casually.wsgyq.cn
http://alcyonarian.wsgyq.cn
http://cervicothoracic.wsgyq.cn
http://brachydactyl.wsgyq.cn
http://aright.wsgyq.cn
http://antagonism.wsgyq.cn
http://asperse.wsgyq.cn
http://androsphinx.wsgyq.cn
http://braid.wsgyq.cn
http://camisard.wsgyq.cn
http://belfast.wsgyq.cn
http://actionable.wsgyq.cn
http://areopagitica.wsgyq.cn
http://cheaters.wsgyq.cn
http://arminianism.wsgyq.cn
http://biface.wsgyq.cn
http://ceti.wsgyq.cn
http://assyria.wsgyq.cn
http://bigaroon.wsgyq.cn
http://bretzel.wsgyq.cn
http://beg.wsgyq.cn
http://anticipatory.wsgyq.cn
http://basidiomycete.wsgyq.cn
http://auld.wsgyq.cn
http://burrito.wsgyq.cn
http://caste.wsgyq.cn
http://analogue.wsgyq.cn
http://www.dtcms.com/a/280903.html

相关文章:

  • Python爬虫实战:研究Mistune库相关技术
  • Android中Launcher简介
  • 【SOA用于噪声抑制】光纤DFB激光器中弛豫振荡噪声抑制
  • Android原生Dialog
  • 关于我用AI编写了一个聊天机器人……(番外1)
  • 博客项目 laravel vue mysql 第六章 文章功能
  • PHP:从入门到实战的全面指南
  • 【PTA数据结构 | C语言版】构造二叉树
  • python原生处理properties文件
  • curl请求一直等待但是postman访问正常的问题处理
  • 视频HDR技术全解析:从原理到应用的深度探索
  • IDEA中删除多余的jdk选项 【IDEA2024版】
  • 企业培训视频如何做内容加密防下载防盗录(功能点整理)
  • 零信任安全架构:如何在云环境中重构网络边界?
  • Wing FTP服务器漏洞正遭活跃利用,CVSS评分10分
  • 设计模式之对象池模式
  • 说下对mysql MVCC的理解
  • 深入理解设计模式之外观模式:简化复杂系统的艺术
  • 经典排序算法之希尔排序
  • RTL编程中常用的几种语言对比
  • c#泛型集合
  • Azure FXmsv2 系列与 Azure FXmdsv2 系列虚拟机正式发布
  • Docker 部署emberstack/sftp 镜像
  • JavaScript进阶篇——第四章 解构赋值(完全版)
  • Scrapy扩展深度解析:构建可定制化爬虫生态系统的核心技术
  • 500+技术栈覆盖:Web测试平台TestComplete的对象识别技术解析
  • C#,List<T> 与 Vector<T>
  • 构建强大的物联网架构所需了解的一切
  • Linux下编译海思WS63 SDK全攻略
  • 数据结构:线性表