JavaScript中的DOM导航

🧑‍🎓 个人主页:《爱蹦跶的大A阿》

🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》

​ 

✨ 前言

        在我们的日常生活中,JavaScript已经成为了一种无处不在的编程语言。它的应用范围从简单的网页动画,到复杂的前端框架,再到后端的Node.js,甚至还包括物联网设备。然而,JavaScript并非一成不变,它一直在发展,一直在添加新的特性和功能。今天,我们将探讨JavaScript中的一个重要的概念:DOM导航。在这篇文章中,我们将详细介绍DOM导航,包括它的定义、使用方法,以及如何在不支持DOM导航的浏览器中进行polyfill。

✨ 正文

DOM树

        浏览器将HTML表示为标签的树形结构,这就是DOM树。在DOM树中,每个HTML标签都是一个对象,嵌套的标签是闭合标签的“子标签(children)”。标签内的文本也是一个对象。所有这些对象都可以通过JavaScript来访问,我们可以使用它们来修改页面。例如,document.body是表示<body>标签的对象。

document.body.style.background = 'red'; 
setTimeout(() => document.body.style.background = '', 3000);

        在这里,我们使用了style.background来修改document.body的背景颜色,但是还有很多其他的属性,例如:innerHTML——节点的HTML内容,offsetWidth——节点宽度(以像素度量)等。

这里是一张描述对象间链接的图片,通过这些链接我们可以在 DOM 节点之间移动。

 

DOM的例子

让我们从下面这个简单的文档(document)开始:

<!DOCTYPE HTML>
<html>
<head>
<title> About elk </title>
</head>
<body>
The truth about elk.
</body>
</html>

DOM将HTML表示为标签的树形结构。它看起来如下所示:

        在上面的图片中,你可以点击元素(element)节点,它们的子节点会打开/折叠。每个树的节点都是一个对象。标签被称为元素节点(或者仅仅是元素),并形成了树状结构:<html>在根节点,<head><body>是其子项,等。元素内的文本形成文本节点,被标记为#text。一个文本节点只包含一个字符串。它没有子项,并且总是树的叶子。例如,<title>标签里面有文本"About elk"。

其他节点类型

除了元素和文本节点外,还有一些其他的节点类型。例如,注释:

<!DOCTYPE HTML>
<html>
<body>
The truth about elk.
<ol>
<li> An elk is a smart </li>
<!-- comment -->
<li> ...and cunning animal! </li>
</ol>
</body>
</html>

        在这里我们可以看到一个新的树节点类型 —— comment节点,被标记为#comment,它在两个文本节点之间。

兄弟节点和父节点

兄弟节点(sibling) 是指有同一个父节点的节点。 例如, <head> 和 <body> 就是兄弟节点:

<html>
<head> ... </head>
<body> ... </body>
</html>

<body> 可以说是 <head> 的“下一个”或者“右边”兄弟节点。 <head> 可以说是 <body> 的“前一个”或者“左边”兄弟节点。 下一个兄弟节点在 nextSibling 属性中,上一个是在 previousSibling 属性中。

        希望这个概述能帮助你理解JavaScript中的DOM导航,并为你的博客文章提供一个良好的起点。如果你需要更多的信息或者对某个部分有更深入的问题,欢迎随时向我提问!

 

✨ 结语

        JavaScript的DOM导航为我们打开了一个全新的世界,让我们能够在JavaScript中处理任意大小的字符。虽然DOM导航在一些方面与常规的字符有所不同,但是只要我们理解了这些差异,并知道如何正确地使用DOM导航,我们就能够充分利用它的强大功能。无论你是正在处理大数据,还是在进行高精度计算,DOM导航都能够提供强大的支持。希望这篇文章能够帮助你理解和掌握JavaScript中的DOM导航,让你在编程的道路上更进一步。如果你有任何问题或者需要更深入的讨论,欢迎随时向我提问!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/344782.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端 防止浏览器提示记住密码以及自动填充密码

当前端 <input /> 的 type’password‘ 时&#xff0c;浏览器为了优化用户体验&#xff0c;会在表单提交后提示用户记住密码 如果不想要这样的行为&#xff0c;最简单的当然是提示用户自己在浏览器设置中进行相关配置 如果希望在代码层面阻止浏览器提示是否记住密码或者…

自动化Web页面性能测试介绍

随着越来越多的用户使用移动设备访问 Web 应用&#xff0c;使得 Web 应用需要支持一些性能并不是很好的移动设备。为了度量和测试 Web 应用是不是在高复杂度的情况下&#xff0c;页面性能能满足用户的需求。 同时&#xff0c;随着 Web 应用的空前发展&#xff0c;前端业务逐渐…

vue2项目打包到测试环境之后报错require is not defined

配置打包命令npm run build:test到测试环境之后报错&#xff0c;打包到生产环境没有问题&#xff0c;查找了项目中的require引入似乎也没啥有问题的地方&#xff0c;所以排除是require的原因 环境变量文件&#xff1a; 打包指令&#xff1a; 解决办法&#xff1a; 将.env.tes…

新网站收录需要多长时间完成审核

新网站的收录时间因多种因素而异。 一般来说&#xff0c;新上线的网站可能在最快3-7天内被百度收录&#xff0c;尤其是那些有高质量内容的网 然而&#xff0c;通常情况下&#xff0c;新网站的收录可能会在7-15天左右发生。 有些情况下&#xff0c;如果网站的内容足够丰富和有价…

《WebKit 技术内幕》学习之四(3): 资源加载和网络栈

3. 网络栈 3.1 WebKit的网络设施 WebKit的资源加载其实是交由各个移植来实现的&#xff0c;所以WebCore其实并没有什么特别的基础设施&#xff0c;每个移植的网络实现是非常不一样的。 从WebKit的代码结构中可以看出&#xff0c;网络部分代码的确比较少的&#xff0c;它们都在…

【C++记忆站】类和对象(三)

文章目录 再谈构造函数构造函数赋值并非初始化初始化列表explicit关键字 static成员概念特性一、静态成员为所有类对象所共享&#xff0c;不属于某个具体的对象二、静态成员变量必须在类外定义&#xff0c;定义时不添加static关键字三、静态成员函数没有隐藏的this指针&#xf…

控制项目风险

一、风险预算 暴雪公司经理艾莉森&#xff0c;暴雪公司是一家小型工业企业&#xff0c;该公司的高管为了降低生产成本&#xff0c;决定搬迁工厂。项目经理明白实际情况与初始计划之间常常会有很大的出入。项目经理需要事先为一些事情做好准备&#xff0c;并在项目运作或预算方面…

mongo 聚合查询 - 小试牛刀

聚合查询configId为1231231312,且返回id和sum的map结构。 _id,count db.getCollection("s_p_collection").aggregate([{"$match": {"deleted"

《WebKit 技术内幕》学习之十一(3):多媒体

3 音频 3.1 音频元素 说完视频之后&#xff0c;接下来就是HTML5中对音频的支持情况。音频支持不仅指对声音的播放&#xff0c;还包括对音频的编辑和合成&#xff0c;以及对乐器数字接口&#xff08;MIDI&#xff09;等的支持&#xff0c;下面逐次介绍并分析它们。 3.1.1 H…

虹科分享丨AR与AI融合加速,医疗护理更便捷!

来源&#xff1a;虹科数字化与AR 虹科分享丨AR与AI融合加速&#xff0c;医疗护理更便捷&#xff01; 原文链接&#xff1a;https://mp.weixin.qq.com/s/Fi0wNfk_TDXRo_1-6cSRNQ 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; #AR眼镜 #医疗护理 根据Reports and Da…

vue中图片不显示问题 - vue中静态资源加载

文章目录 vue中图片不显示问题静态资源URL 转换规则webpack 静态资源处理 图片不显示问题问题描述解决办法1&#xff1a;使用require引入require is not defined 解决办法2&#xff1a;使用import引入解决办法3&#xff1a;将图片放进公共文件夹static或public vue中图片不显示…

2024区块链应用最趋势,RWA实物资产化

作者 张群&#xff08;赛联区块链教育首席讲师&#xff0c;工信部赛迪特聘资深专家&#xff0c;CSDN认证业界专家&#xff0c;微软认证专家&#xff0c;多家企业区块链产品顾问&#xff09;关注张群&#xff0c;为您提供一站式区块链技术和方案咨询。 实物资产通证化&#xff0…

HarmonyOS鸿蒙学习基础篇 - 基本语法概述

书接上文 HarmonyOS鸿蒙学习基础篇 - 运行第一个程序 Hello World 基本语法概述 打开 entry>src>main>ets>pages>index.ets 代码如下代码详细解释如下&#xff1a; Entry //Entry装饰的自定义组件将作为UI页面的入口。在单个UI页面中&#xff0c;最多可以使用…

一份简单的JSON教程(个人学习笔记)

目录 前言 JSON基本介绍 JSON实例 JSON与XML对比 JSON语法 JSON VS XML json和xml在写法上有所不同 JSON 与 XML 的相同之处&#xff1a; JSON 与 XML 的不同之处&#xff1a; 最大的不同 为什么JSON比XML好 JSON对象 语法 访问对象的值 循环对象 嵌套JSON对象 …

highcharts.css文件的样式覆盖了options的series里面的color问题解决

文章目录 一、问题背景二、解决问题 一、问题背景 原本的charts我们的每个数据是有对应的color显示的&#xff0c;如下图&#xff1a; 后面我们系统做了黑白模式&#xff0c;引入了highcharts的css文件&#xff0c;结果highcharts的css文件中class的颜色样式覆盖了我们数据中的…

教学改进措施及方法

在教育的世界里&#xff0c;每一位教师都是一位探险家&#xff0c;探索着如何更好地点燃学生的求知欲望&#xff0c;帮助他们展翅飞翔。我&#xff0c;作为一位拥有多年教学经验的教师&#xff0c;也在这条路上不断摸索。今天&#xff0c;我想分享一些我在教学实践中的改进措施…

RabbitMQ中交换机的应用 ,原理 ,案例的实现

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是平顶山大师&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的博客专栏《RabbitMQ中交换机的应用及原理&#xff0c;案…

消息中间件之八股面试回答篇:二、MQ如何保证消息不重复消费(幂等性)+RabbitMQ死信交换机(延迟队列)+回答模板

MQ消息重复消费问题 可能出现重复消费的场景 网络抖动消费者挂了 MQ通用的解决方案 每条消息设置一个唯一的标识id幂等方案&#xff1a;【 分布式锁、数据库锁&#xff08;悲观锁、乐观锁&#xff09; 】 RabbitMQ的死信交换机 当一个队列中的消息满足下列情况之一时&…

图卷积网络(GCN)

本文主要分为两部分&#xff0c;第一部分介绍什么是GCN&#xff0c;第二部分将进行详细的数学推导。 一、什么是GCN 1、GCN 概述 本文讲的GCN 来源于论文&#xff1a;SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS&#xff0c;这是在GCN领域最经典的论文…

allure生成报告展示在vue-admin前端展示

生成测试数据 本栗子测试数据根据pytest测试用例生成 首先设置pytest.ini配置信息 a l l u r e d i r alluredir alluredir代表生产allure报告数据地址 t e s t c a s e d i r test_casedir testc​asedir代表测试用例路径 [pytest] addopts -vs --alluredir $alluredir$…