javascript基础学习系列四百一十二:Comment 类型

本文详细介绍了DOM中的Comment、CDATASection和DocumentType节点类型,包括它们的结构、属性和在JavaScript中的使用场景。注释主要用于文档说明,而CDATASection用于XML文档中的特殊数据块,DocumentType则包含了文档类型信息。
摘要由CSDN通过智能技术生成

DOM 中的注释通过 Comment 类型表示。Comment 类型的节点具有以下特征:

 nodeName 值为"#comment";
 nodeValue 值为注释的内容;
 parentNode 值为 Document 或 Element 对象;
 不支持子节点。

Comment 类型与 Text 类型继承同一个基类(CharacterData),因此拥有除 splitText()之外Text 节点所有的字符串操作方法。与 Text 类型相似,注释的实际内容可以通过 nodeValue 或 data
属性获得。
注释节点可以作为父节点的子节点来访问。比如下面的 HTML 代码:

这里的注释是

元素的子节点,这意味着可以像下面这样访问它:

let comment = div.firstChild; 
alert(comment.data); // "A comment" 

可以使用 document.createComment()方法创建注释节点,参数为注释文本,如下所示:

显然,注释节点很少通过 JavaScrpit 创建和访问,因为注释几乎不涉及算法逻辑。此外,浏览器不承认结束的标签之后的注释。如果要访问注释节点,则必须确定它们是元素的后代。
CDATASection 类型
CDATASection 类型表示 XML 中特有的 CDATA 区块。CDATASection 类型继承 Text 类型,因此拥有包括 splitText()在内的所有字符串操作方法。CDATASection 类型的节点具有以下特征:

 nodeName 值为"#cdata-section";
 nodeValue 值为 CDATA 区块的内容;
 parentNode 值为 Document 或 Element 对象;
 不支持子节点。

CDATA 区块只在 XML 文档中有效,因此某些浏览器比较陈旧的版本会错误地将 CDATA 区块解析为 Comment 或 Element。比如下面这行代码:

这里

的第一个子节点应该是 CDATASection 节点。但主流的四大浏览器没有一个将其识别为CDATASection。即使在有效的 XHTML 文档中,这些浏览器也不能恰当地支持嵌入的 CDATA 区块。
在真正的 XML 文档中,可以使document.createCDataSection()并传入节点内容来创建CDATA 区块。
DocumentType 类型
DocumentType 类型的节点包含文档的文档类型(doctype)信息,具有以下特征:

 nodeName 值为文档类型的名称;
 nodeValue 值为 null;
 parentNode 值为 Document 对象;
 不支持子节点。

DocumentType 对象在 DOM Level 1 中不支持动态创建,只能在解析文档代码时创建。对于支持这个类型的浏览器,DocumentType 对象保存在 document.doctype 属性中。DOM Level 1 规定了DocumentType 对象的 3 个属性:name、entities 和 notations。其中,name 是文档类型的名称,entities 是这个文档类型描述的实体的 NamedNodeMap,而 notations 是这个文档类型描述的表示法的 NamedNodeMap。因为浏览器中的文档通常是 HTML 或 XHTML 文档类型,所以 entities 和notations 列表为空。(这个对象只包含行内声明的文档类型。)无论如何,只有 name 属性是有用的。
这个属性包含文档类型的名称,即紧跟在<!DOCTYPE 后面的那串文本。比如下面的 HTML 4.01 严格文档类型:

 "http:// www.w3.org/TR/html4/strict.dtd"> 
对于这个文档类型,name 属性的值是"html":
alert(document.doctype.name); // "html"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值