怎么遍历DOM

怎么遍历DOM

相关推荐:《javascript视频教程》

我们知道可以使用document对象的内置方法通过ID,类,标签名和查询选择器来访问HTML元素。 DOM 是由节点树构成的,document 节点位于根,其他每个节点(包括元素,注释和文本节点)都作为各个分支的节点。

在本教程中,我们回顾一些HTML术语,这对使用 JS 和DOM非常重要,我们会介绍一下DOM树,节点,以及如何识别最常见的节点类型。最后,创建一个 JS 程序来交互式地修改DOM。

HTML术语

首先,我们看一下这个HTML元素。

Home

登录后复制登录后复制登录后复制

这里我们有一个锚元素,它是一个到index.html的链接。

a 是标签href 是属性index.html 是属性值Home 是文本

开头和结尾标记之间的所有内容组合在一起构成了整个HTML元素。

nbsp;html>      Learning the DOM        

Document Object Model

  

登录后复制

使用 JS 访问元素的最简单方法是通过id属性,接着为上面的 a 标签添加一个id为nav值。

Home

登录后复制登录后复制登录后复制

我们可以通过getElementById()方法来获取 a 标签。在控制台输入:

let navLink = document.getElementById('nav');

登录后复制

输出:

Home

登录后复制登录后复制登录后复制

我们可以通过更改href属性来更改链接的地址:

navLink.href = 'https://github.com/qq449245884/xiaozhi';

登录后复制

我们还可以通过textContent属性来更改文本内容:

navLink.textContent = '跳转取前端小智 Github';

登录后复制

接着,直接在控制台输入 navLink 就可以看到我们 a 标签更新后的内容:

跳转取前端小智 Github

登录后复制

到这里,我们应该了解如何使用document 方法访问元素,如何将元素分配给变量以及如何修改元素中的属性和值。

DOM 树和节点

DOM中的所有元素都被定义为节点。节点的类型有很多种,但我们最常用的主要有三种:

元素节点文本节点注释节点

当HTML元素是DOM中的一个项时,它被称为元素节点。元素之外的任何单独文本都是一个文本节点,HTML 注释是一个注释节点。除了这三种节点类型之外,document 本身也是一个document 节点,它是所有其他节点的根。

DOM由嵌套节点的树结构组成,通常称为DOM树。 我们知道祖先的家谱,该谱系由父母,孩子和兄弟姐妹组成。 DOM中的节点也称为父级,子级和同级,具体取决于它们与其他节点的关系。

为了演示,创建一个nodes.html文件,添加文本,注释和元素节点。

nbsp;html>      Learning About Nodes        

An element node

        A text node.  

登录后复制

html元素节点是父节点。head和body是兄弟节点,它们是 html 的子节点。body包含三个子节点,它们都是兄弟节点,节点的类型不会改变其嵌套的级别。

注意:当使用HTML生成的DOM时,HTML源代码的缩进将创建许多空文本节点,这些节点在DevTools Elements选项卡中是不可见的。了解DOM中的空白符更多知识请访问 https://developer.mozilla.org…

识别节点类型

文档中的每个节点都有一个节点类型,可以通过nodeType属性访问该类型,更多节点类型大家可以到 MDN 上查看。下面是我们比较常见节点类型。

Node Type 值 描述

ELEMENT_NODE1一个 元素 节点,例如

TEXT_NODE3Element 或者 Attr 中实际的  文字COMMENT_NODE8注释节点,如

在 Developer Tools 的Elements选项卡中,你可能会注意到,每当单击并突出显示DOM中的任何一行时,它旁边就会出现== $0的值。通过输入$0,这是访问开发人员工具中当选中元素的一种非常方便的方法。

通过 F12 选中一个元素,如我们选中 h1 标签:

1.png

在控制台中,使用nodeType属性获取当前选定节点的节点类型。

$0.nodeType;// 1

登录后复制

选择h1元素后,可以看到控制台输出 1,它与ELEMENT_NODE相关。 对文本和注释执行相同的操作,分别输出3和8。

除了nodeType之外,还可以使用nodeValue属性获取文本或注释节点的值,并使用nodeName获取元素的标签名。

使用事件修改DOM

到目前为止,我们只看到了如何在控制台中修改DOM,接着我们通过事件的方式来跟 Dom 玩玩。

回到index.html文件,添加一个带有id的button元素,并新建 script.js 引入其中。

JS 中的事件是用户所做的动作。当用户将鼠标悬停在一个元素上,或单击一个元素,或按下键盘上的一个特定键时,这些都是事件类型。在这个特殊的例子中,我们希望我们的按钮侦听并准备在用户单击它时执行操作。我们可以通过向按钮添加一个事件监听器来做到这一点。

在 scripts.js中首先找到 button 元素,并监听一个 click 事件,在点击事件里面我们去更网页的背景颜色:

let button = document.getElementById('changeBackground')button.addEventListener('click', () => {  document.body.style.backgroundColor = 'fuchsia'})

登录后复制

存该文件后,在浏览器中刷新index.html。 单击按钮,事件将触发。

2.png

总结

在本文中,我们了解了DOM 是如何构造成节点树的,节点树通常是HTML元素、文本或注释,我们创建了一个脚本,允许用户修改网站,而不必手动在开发人员控制台中输入代码。

原文地址:https://www.taniascia.com/how-to-traverse-the-dom/

作者: Tania Rascia 

译文地址:https://segmentfault.com/a/1190000038466474

更多编程相关知识,请访问:编程视频!!

以上就是怎么遍历DOM的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2718576.html

(0)
上一篇 2025年3月7日 22:16:45
下一篇 2025年2月24日 02:09:28

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 实现原生js实现轮播图

    免费学习推荐:javascript视频教程 使用原生js实现轮播图 今天分享一个使用原生JS实现轮播图的案例,并且配上比较详细的过程讲解,欢迎小伙伴的浏览和批评指正。静态效果图如下: 核心思想 将一些图片在一行中平铺,然后计算偏移量再利用定…

    2025年3月7日 编程技术
    200
  • 记录JavaScript的学习笔记

    免费学习推荐:javascript学习教程 一、什么是JavaScript 1-1、JavaScript实现 虽然JavaScript和ECMAScript基本上是同义词,但JavaScript远不限于ECMA-262所定义的那样。完整的J…

    2025年3月7日
    200
  • DOM节点和元素之间有什么区别

    相关推荐:《javascript视频教程》 文档对象模型(DOM)是一个将HTML或XML文档视为树形结构的接口,其中每个节点都是文档的一个对象。DOM还提供了一组方法来查询树、改变结构、样式。 DOM 还使用术语元素(Element)它与…

    2025年3月7日
    200
  • JavaScript实现UTF-8编解码

    免费学习推荐:javascript视频教程 首先简单介绍一下UTF-8。UTF-8以字节为单位对Unicode进行编码。UTF-8的特点是对不同范围的字符使用不同长度的编码。对于0x00-0x7F之间的字符,UTF-8编码与ASCII编码完…

    2025年3月7日
    200
  • 实现js的双线性插值和双三次插值法

    免费学习推荐:js视频教程 介绍双线性插值原理双三次插值法原理js实现 介绍 在网页中利用canvas进行绘图时,遇到一个问题,原始的数据分辨率很小,而图片要放大到整个网页,所以需要把数据进行插值放大。学习了双线性插值和三次内插法插值,两种…

    2025年3月7日 编程技术
    200
  • js基本数据类型有哪些

    js基本数据类型有:1、常用的基本数据类型包括undefined、null、number、boolean、string;2、引用数据类型也就是对象类型,比如Object、array、function、data等。 本文操作环境:宏基s40-…

    编程技术 2025年3月7日
    200
  • vue和javascript的区别是什么

    vue和javascript的区别:1、javaScript是运行在浏览器端的脚本语言,而Vue.js可以作为一个js库来使用,是一套构建用户界面的渐进式JavaScript框架;2、js要获取到DOM对象,而Vue是值和js对象进行绑定。…

    编程技术 2025年3月7日
    200
  • JavaScript介绍AJAX加载单张图片展示进度的方法

    免费学习推荐:js视频教程 用手机上网,经常看到加载进度条,尤其是加载图片的。 做过多张图片的加载进度,但是对于单张图片,特别是图片比较大的时候,需要进度条告诉用户加载进度,且可以提高用户体验。 传统的加载肯定不行,需要用到 AJAX 加载…

    2025年3月7日
    200
  • 使用JavaScript禁止复制网站内容的几种方法

    若是你不想别人复制你的网站内容,可以把这段js代码加到你网页上,即可屏蔽鼠标右键菜单、复制粘贴、选中等。 有时候的需求是网站中有些内容不希望别人复制,那么就需要用代码控制。 方法有多种: 第一种: 立即学习“Java免费学习笔记(深入)”;…

    2025年3月7日
    200
  • 使用JavaScript实现休眠或等待

    JavaScript不具有 sleep() 函数,该函数会导致代码在恢复执行之前等待指定的时间段。如果需要JavaScript等待,该怎么做呢? 假设您想将三则消息记录到Javascript控制台,每条消息之间要延迟一秒钟。JavaScri…

    2025年3月7日
    200

发表回复

登录后才能评论