这篇文章主要介绍了javascript DOM节点属性知识点有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇javascript DOM节点属性知识点有哪些文章都会有所收获,下面我们一起来看看吧。DOM节点的属性取决于它们的类(class)。例如,标签对应的是一个元素节点和链接
a
相关的属性。文本节点与元素节点不一样,但是它们之间也有相同的属性和方法,因为所有的DOM节点会形成一个DOM树。每个DOM节点属于相应的内置类。root
是DOM树的EventTarget
,它是由Node
继承的,而其他DOM节点继承它。下图可以帮助我们更易于理解:DOM节点的类主要有:EventTarget
:是root
抽象类(Abstract Class)。该类的对象永远不会创建。它作为一个基础,因此所有的DOM节点都支持所谓的事件(Events),稍后会涉及这个Node
:也是一个抽象类,作为DOM节点的基础。它提供了核心功能:parentNode
、nextSibling
、childNodes
等(它们是getter
)。节点类的对象没有被创建。但是,有一些具体的节点类继承了它,比如:文本节点的Text
,元素节点的Element
以及注释节点的Comment
等Element
:是DOM元素的基本类。它提供了元素级的搜索,比如nextElementSibling
、childern
、getElementsByTagName
、querySelector
等。在浏览器中,不仅有HTML,还有XML和SVG文档。元素类是更具体类的一些基础,比如SVGElement
、XMLElement
和HTMLElement
HTMLElement
:是HTML元素的基本类,它由各种HTML元素继承。比如HTMLInputElemnt
(对应input
元素的类)、HTMLBodyElement
(对应body
元素的类)和HTMLAnchorElement
(对应a
元素的类)等对于HTMLElement
类,还有很多其它种,比如下图所示的这些。因此,节点的全部属性和方法都是继承的结果!例如,DOM对象中的元素。它属于
HTMLElement
类中的HTMLInputElement
类。它将属性和方法叠加在一起:HTMLInputElement
:提供了input
指定的属性HTMLElement
:它提供常用的HTML元素方法(getter
和setter
)Element
:提供元素通用方法Node
:提供公共的DOM节点属性EventTarget
:提供对事件的支持(覆盖)最后它继承了Object
的方法(纯对象),比如hasOwnProperty
如果我们想查DOM节点类名,可以使用对象常用的constructor
属性。它引用类构造函数,可以使用constructor.name
来获取它的name
。比如:或者使用toString
把它串起来,比如:我们还可以使用instanceof
来检查继承关系:正如我们所看到的,DOM节点是常规的JavaScript对象。他们使用基于原型的类来继承。在浏览器中使用console.dir(elem)
输出元素也很容易。在控制台可以看到HTMLElement.prototype
、Element.prototype
等等。在浏览器和DOM一节中,我们知道浏览器会根据DOM模型,将HTML文档解析成一系列的节点,再由这些节点组成一个DOM树。在DOM中的最小组成单位叫做节点(Node),DOM树由12种类型的节点组成。DOM中的Node至少拥有nodeType
、nodeName
和nodeValue
这三个基本属性。节点类型不同,这三个属性的值也会不相同。nodeType
:该属性返回节点类型的常数值。不同的类型对应不同的常数值,12种类型分别对应1
到12
的常数值,如下面的表格所示nodeName
:该属性返回节点的名称nodeValue
:该属性返回或设置当前节点的值,格式为字符串nodeType
节点类型:而其中元素节点、文本节点和属性节点是我们操作DOM最常见的几种节点类型。
在JavaScript中,我们可以使用instanceof
和其他基于类的测试来查看节点类型,但是有时候n免费云主机域名odeType
可能更简单。而nodeType
是只能属性,我们不能修改它。前面提到过nodeName
将会返回节点名称(返回的是HTML标签,并且是大写的)。也就是说,给定的DOM节点,可以通过nodeName
属性读取它的标签名称,比如:除了nodeName
属性之外,还可以通过tagName
属性来读取:虽然nodeName
和tagName
都能读取到元素标签名,但两者之间有区别吗?当然,两者之间有略微的差异:tagName
属性只能用于元素节点(Element
)nodeName
属性可以用于任意节点(Node
)上,如果用于元素上,那么和tagName
相同,如果用于其他节点类型,比如文本、注释节点等,它有一个带有节点类型的字符串也就是说,tagName
只支持元素节点(因为它源于Element
类),而nodeName
可以用于所有节点类型。比如下面这个示例,来比较一下tagName
和nodeName
的结果:如果我们只处理DOM元素,那么我们就可以选择tagName
属性来做相应的处理。除了XHTML,标签名始终是大写的。浏览器有两种处理文档的模式:HTML和XML。通常HTML模式用于Web页面。当浏览器接收到一个带有Content-Type:application/xml+xhtml
的头,就会启用XML模式。在HTML模式中,tagName
或者nodeName
总是返回大写标签,比如或
返回的是
BODY
;对于XML模式,现在很少使用了。对于DOM节点的内容,JavaScript中提供了几个方法来对其进行操作,比如innerHTML
、outerHTML
、textContent
、innerText
、outerText
和nodeValue
等。接下来,咱们看看他们的使用场景以及相应的差异性。为了易于帮助大家理解和掌握这向方法的使用,接下来的示例都将围绕着下面这个DOM结构来做处理:TheparagraphelementinnerHTML
属性允许我们获取元素的HTML,而且其获取的的值是一个String
类型。比如:输出的结果如下:上面看到的是innerHTML
属性获取某个元素的内容,当然innerHTML
也可以修改某个元素的内容。比如:刷新页面,段落p
元素整个内容都将被修改了:如果使用innerHTML
将标签插入到
document
,它不会被执行。使用innerHTML
可以使用ele.innerHTML += "something"
来追回更多的HTML,比如下面这个示例:结果如下:使用innerHTML
要非常小心,因为它做的不是加法,而是完整的覆盖。还有:当内容为“零输出”(zeroed-out)和从头重写时,所有的图像和其他资源将被重新加载。outerHTML
属性包含元素的全部HTML。就像innerHTML
的内容加上元素本身一样。从文字难于理解或想象的话,咱们把上面的示例修改一下,通过innerHTML
和outerHTML
的结果来看其获取的是什么:输出的结果:outerHTML
和innerHTML
也可以写入,但不同的是:innerHTML
可以写入内容,改变元素,但outerHTML
在外部环境中取代了整体!比如下面这个示例:从效果和页面源码上截图可以看出来,p
替换了p
。outerHTML
赋值不修改DOM元素,而是从外部环境中提取它,并插入一个新的HTML片段,而不是它。新手时常在这里会犯错误:修改eleP.outerHTML
,然后继续使用eleP
,就好像它有新的内容一样。我们可以写入outerHTML
,但是要记住,它不会改变我们写入的元素。相反,它会在它的位置上创建新的内容。我们可以通过查询DOM获得对新元素的引用。比如:结果如下:textContent
属性和innerHTML
以及outerHTML
都不一样。textContent
只获取元素的纯文本内容,包括其后代元素的内容。比如:结果如下:正如我们所看到的,textContent
返回的只有文本内容,就像是把所有HTML元素的标签都删除了,但是它们的文本仍然保留着。正如上面示例中的,innerHTML
、outerHTML
和textContent
输出的结果,可以一目了然知道他们之间的差异性。textContent
和其他两个属性一样,也可以写入内容。但对于textContent
的写入更为有用,因为它写入的内容是纯内容,是一种安全方式。而innerHTML
和outerHTML
都会写入HTML,而会写入HTML标签的方式是一种不安全的形式,容易引起Web的XSS攻击。XSS我们先忽略,来看看写入的差异性:效果如下:如果你够仔细的话,会发现,name
中的Boo,Waa!!!
的标签也被当做文本内容写进去了。如下图所示:大多数情况之下,我们希望从用户那里得到文本,并希望将其视为文本。我们不希望在我们的网站上出现意想不到的HTML,那么
textContent
就可以得到你想要的。innerText
和outerText
是IE的私有属性,获取的也是元素的文本内容,有点类似于textContent
。所以这里只简单的提一提,并不深入展开。如果这里有误,请大大们指正。innerHTML
属性仅对元素节点有效。其他节点类型有对应的节点:nodeValue
和data
属性。这两种方法在实际应用中几乎是相同的,只有很小的差异。来看看示例。Theparagraphelement他们输出的结果是相同的:每个DOM节点属于某个类。这些类构成一个DOM树。所有的属性和方法都将被继承。主要的DOM节点属性有:nodeType
:我们可以从DOM对象类中获取nodeType
。我们通常需要查看它是否是文本或元素节点,使用nodeType
属性很好。它可以获取对应的常数值,其中1
表示元素节点,3
表示文本节点。另外,该属性是一个只读属性。nodeName / tagName
:tagName
只用于元素节点,对于非元素节点使用nodeName
来描述。它们也是只读属性。innerHTML
:获取HTML元素的内容(包括元素标签自身)。其可以被修改。outerHTML
:获取元素完整的HTML。outerHTML
并没有触及元素自身。相反,它被外部环境中的新HTML所取代。nodeValue / data
:非元素节点的内容(文本、注释)。这两个几乎是一样的,不过我们通常使用data
。textContent
:获取元素内容的文本,基本上是HTML减去所有的标签。它也具有写入特性,可以将文本放入元素中,所有特殊的字符和标记都被精确的处理为文本。DOM节点也有其他属性,这取决于它们的类。例如,元素(
HTMLElement
)具有value
、type
属性,而元素(
HTMLAnchorElement
)具有href
属性。大多数标准的HTML属性都具有相应的DOM属性。关于“javascript DOM节点属性知识点有哪些”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“javascript DOM节点属性知识点有哪些”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注百云主机行业资讯频道。
这篇“npm报错如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“npm报错如何解决”文章吧。解决方案:清理缓存后再次安装解决方案:安装最新…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。