快速了解JavaScript的DOM模型( 四 )

  • substringData(offset, count):提取从offset指定的位置开始到offset+count为止处的字符串 。
  • 除了这些方法外,文本节点还有一个length属性,保存着节点中字符的数目 。而且,nodeValue.length和data.length中也保存着同样的值 。
    修改文本节点的结果会立即得到反映 。因此字符串会经过HTML(或XML,取决于文档类型)编码 。
    使用document.createTextNode()可以创建文本节点,在DOM创建中会讲述它 。
    Comment注释在DOM中是通过Comment类型来表示的 。Comment节点具有下列特征:
    • nodeType为Node.COMMENT_NODE,数值为8 。
    • nodeName的值为#comment 。
    • nodeValue的值是注释的内容 。
    • parentNode可能是Document或Element 。
    • 不支持子节点(没有子节点) 。
    Comment类型与Text类型继承自相同的基类,因此它拥有除splitText()之外的所有字符串操作方法 。与Text类型相似,也可以通过nodeValue或data属性取得注释的内容 。
    获取<div id="divId"><!--A comment--></div>代码中的注释:
    var div = document.getElementById("divId");var comment = div.firstChild;console.log(comment.data);// A comment如果想创建注释节点,可以使用document.createComment(data)方法创建 。
    var comment = document.createComment("Create a comment node");浏览器不会识别位于</html>标签后面的注释 。一定保证访问的注释节点位于<html></html>之间 。
    CDATASectionCDATASection类型只针对基于XML文档,表示的是CDATA区域 。与Comment类似,CDATASection类型继承自Text类型,因此拥有除splitText()之外的所有字符串操作方法 。CDATASection节点具有以下特征:
    • nodeType为CDATA_SECTION_NODE,值为4 。
    • nodeName的值为#cdata-section 。
    • nodeValue的值是CDATA区域中的内容 。
    • parentNode可能是Document或Element 。
    • 不支持子节点(没有子节点) 。
    CDATA区域只会出现在XML文档中,因此多数浏览器都会把CDATA区域错误地解析为Comment或Element 。以下面的代码为例:
    <div id="divId"><![CDATA[This is content.]]></div>这个例子中的<div>元素应该包含一个CDATASection节点 。可是,四大主流浏览器无一能够这样解析它 。即使对于有效的XHTML页面,浏览器也没有正确地支持嵌入的CDATA区域 。
    在真正的XML文档中,可以使用
    document.createCDataSection()来创建CDATA区域,只需为其传入节点的内容即可 。
    DocumentTypeDocumentType类型在Web浏览器中并不常用 。DocumentType包含着与文档有关的doctype有关的所有信息,它具有下列特征:
    • nodeType为Node.DOCUMENT_TYPE_NODE,值为10 。
    • nodeName的值为doctype的名称 。
    • nodeValue的值为null 。
    • parentNode是Document类型 。
    • 没有子节点 。
    DOM 1级规定的DocumentType对象不能动态创建,只通过解析文档代码的方式来创建 。支持DocumentType的浏览器会把它保存在document.doctype中 。
    DocumentType对象在DOM 1级中有3个属性:
    • DocumentType.name,文档类型的名称 。
    • DocumentType.entities,文档类型描述的实体NamedNodeMap对象 。
    • DocumentType.notations,文档类型描述的符号NamedNodeMap对象 。
    浏览器中一般是HTML或XHTML类型的文档 。所以entities和notations都是空列表 。只有name属性有用 。
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">在这里,DocumentType中的name属性保存的就是HTML 。
    console.log(document.doctype.name);// HTMLDocumentFragmentDocumentFragment是文档片段,一种"轻量级"文档,可以包含和控制节点,但不像完整文档那样占用额外资源 。可以将它作为"仓库"使用 。具有下列特征:
    • nodeType为Node.DOCUMENT_FRAGMENT_NODE,值为11 。
    • nodeName的值为#document-fragment 。
    • nodeValue的值为null 。
    • parentNode的值为null 。
    • 子节点可以是Element、ProcessingInstruction、Comment、Text、CDATASection或EntityReference 。
    使用
    document.createDocumentFragment()方法创建文档片段,如下所示:


    推荐阅读