JavaScript中的DOM导航

发布时间:2024年01月24日

🧑?🎓 个人主页:《爱蹦跶的大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导航,让你在编程的道路上更进一步。如果你有任何问题或者需要更深入的讨论,欢迎随时向我提问!

?

文章来源:https://blog.csdn.net/qq_41152573/article/details/135772709
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。