domsub(dom精神控制入门教程)

domsub(dom精神控制入门教程)本文由原作者Shadeed Ed翻译。 DOM也使用术语元素,它非常类似于节点。那么,DOM节点和元素有什么区别呢? 1. DOM节点 理解节点和元素区别的关键是理解什么是节点。 在更高的层次上,D…

大家好,我是讯享网,很高兴认识大家。

本文由原作者Shadeed Ed翻译。

DOM也使用术语元素,它非常类似于节点。那么,DOM节点和元素有什么区别呢?

1. DOM节点

理解节点和元素区别的关键是理解什么是节点。

在更高的层次上,DOM文档由节点层次结构组成。每个节点可以有一个父节点和/或一个子节点。

看看下面的HTML文档:

& lt!DOCTYPEhtml & gt& lthtml & gt& lthead & gt& lttitle & gtMyPage & lt/title & gt;& lt/head & gt;& ltbody & gt& lt!-page body-& gt;& lth2 & gtMyPage & lt/H2 & gt;& ltpid = & # 34内容& # 34;& gt感谢您访问我的网页!& lt/p & gt;& lt/body & gt;& lt/html & gt;该文档包含以下节点层次结构:

& lthtml & gt是文档树中的一个节点。它有两个子节点:

& ltbody & gt有三个子节点的节点:注释节点

HTML文档中的标记表示一个节点。有趣的是,普通文本也是一个节点。段落

;有一个子节点:文本节点“感谢您访问我的网页!”。

1.2节点类型

我们如何区分这些不同类型的节点?答案在于DOM节点接口,尤其是Node.nodeType属性。

Node.nodeType可以具有以下代表节点类型的值之一:

Node.ELEMENT_NODENode.ATTRIBUTE_NODENode.TEXT_NODENode.CDATA_SECTION_NODENode.PROCESSING_INSTRUCTION_NODENode.COMMENT_NODENode.DOCUMENT_NODENode.DOCUMENT_TYPE_NODENode.DOCUMENT_FRAGMENT_NODENode.NOTATION_NODE

常数有意义地指示节点类型:例如,node。ELEMENT_NODE代表元素节点,NODE。TEXT_NODE代表文本节点,NODE。DOCUMENT_NODE文档节点等等。

例如,让我们选择段落节点,然后查看其nodeType属性:

const paragraph = document . query selector(& # 39;p & # 39);paragraph.nodeType===Node。元素_节点;//= & gt;表示整个节点的文档树的节点类型是node。文档节点:

document.nodeType===Node。文档_节点;//= & gt;2.DOM元素在掌握了DOM节点的知识之后,就该区分DOM节点和元素了。

如果你知道节点术语,那么答案是显而易见的:一个元素是一种特定类型的节点元素(node。ELEMENT_NODE),以及文档、注释、文本等类型。

简而言之,元素是在HTML文档中使用标记编写的节点。& lthtml & gt,& lthead & gt,& lttitle & gt,& ltbody & gt,& lth2 & gt,& ltp & gt是元素,因为它们由标签表示。

文档类型、注释和文本节点不是元素,因为它们不是用标签编写的:

Node是一个节点的构造函数,HTMLElement是JS DOM中一个元素的构造函数。Paragraph既是节点又是元素,是Node和HTMLElement的实例。

const paragraph = document . query selector(& # 39;p & # 39);paragraphinstanceofNode//= & gt;trueparagraphinstanceofHTMLElement;//= & gt;false简单来说,元素是节点的子类型,就像猫是动物的子类型一样。

3. DOM属性:节点和元素

除了区分节点和元素,还有必要区分只包含节点或元素的DOM属性。

节点类型的以下属性被评估为节点或节点集(节点列表):

node.parentNode//nodeornullnode . first child;//nodeornullnode . last child;//nodeornullnode . child nodes;//NodeList但是,以下属性是元素或元素的集合(HTMLCollection):

node.parentElement//htmlelementornullnode . children;//HTMLCollection既然node.childNodes和node.children都返回子列表,为什么要同时拥有这两个属性呢?好问题!

考虑以下包含一些文本的段落元素:

& ltp & gt& ltb & gt谢谢& lt/b & gt;forvisitingmywebpage网页!& lt/p & gt;打开演示,然后查看parapgraph节点的childNodes和children属性:

const paragraph = document . query selector(& # 39;p & # 39);paragraph.childNodes//NodeList:[HTMLElement,Text]paragraph . children;//html collection:[html element]paragraph . child nodes集合包含2个节点:< b & gt谢谢& lt/b & gt;,以及访问我的网页!文本节点!

但是,paragraph.children集合只包含一项:谢谢& lt/b & gt;。

由于paragraph.children只包含元素,所以这里没有text节点,因为它的类型是text (Node。TEXT_NODE),而不是element (Node。元素_节点)。

有了node.childNodes和node.children,我们可以选择要访问的子节点集:所有子节点或只有子节点是元素。

4.总结

DOM是节点的分层集合,每个节点可以有一个父节点和/或一个子节点。如果知道什么是节点,就很容易知道DOM节点和元素的区别。

节点有多种类型,元素类型就是其中之一。在HTML文档中,元素由标签表示。

End ~我是小智,我要去洗碗了,下次见!

作者:Shadeed译者:前端肖智来源:dmitripavlutin

原文:https://dmitripautin.com/dom-node-element/

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。
本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://51itzy.com/8488.html
(0)
上一篇 2024年 4月 2日 07:40
下一篇 2024年 4月 2日 08:00

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注