JavaScript高程第十章:DOM(中)

主要介绍不经常使用的DOM类型node

这里介绍咱们的其余类型,包括如下几个类型:浏览器

  • Text类型app

  • Comment类型函数

  • CDATASection类型编码

  • DocumentType类型code

  • DocumentFragment类型orm

  • Attr类型对象

<!-- more -->继承

Text类型

文本节点由Text类型表示ci

特征

  • nodeType值为3

  • nodeName为"#text"

  • nodeValue为节点包含的文本

  • parentNode是一个Element

  • 不支持(没有)子节点

咱们能够经过nodeValue/data访问Text节点包含的文本.

方法

  • appendData(text)将text添加到节点末尾

  • deleteData(offset,count)从offset指定位置开始删除count个字符

  • insertData(offset,text)从offset指定位置插入text

  • replaceData(offset,count,text)用text替换从offset指定的位置开始到offset+count为止处的文本

  • splitText(offset)从offset指定的位置将当前文本节点分红两个文本节点

  • substringData(offset,count)提取从offset指定位置开始到offset+count为止的字符串
    除此以外,哈有length属性,保存着节点中字符的数目.且值与nodeValue.length和data.length相同.

注意事项

  • 修改时字符串会通过HTML/XML编码,因此对于小于号,大于号和引号咱们要进行转义

建立文本节点

document.createTextNode()接受一个参数,就是插入节点的文本,而后将会根据HTML/XML的格式进行编码.而且在建立时也会为其设置ownerDocument属性.固然咱们要将它添加进文档树中仍是须要以前介绍过的操做的.

规范化文本节点

normalize()这个方法,在一个包含多个文本节点的父元素上调用该方法,会将全部文本节点合并成一个节点.
注意!(IE6):该方法会致使崩溃

分割文本节点

Text类型提供了splitText方法就是和规范化文本节点相反的一个方法,这个方法咱们在以前有介绍到,这是从文本节点提取数据的经常使用DOM解析技术

Comment类型

这就是注释了,在DOM中经过Comment类型来表示咱们的注释.

特征

  • nodeType值为8

  • nodeName值为"#comment"

  • nodeValue值为注释的内容

  • parentNode多是Document或Element

  • 不支持(没有)子节点

值得注意的是Comment类型和Text类型继承自相同的基类,全部在方法上除了splitText()外全部字符串操做方法都与Text类型类似.

建立

document.createComment(text)这个也与文本节点相似,而咱们也不多访问这类节点,因此这里再也不赘述

CDATASection类型

只针对XML文档,表示的是CDATA区域,这与Comment相似,而且该类型继承自Text类型,所以除了splitText()方法以外全部字符串操做方法都类似

特征

  • nodeType值为4

  • nodeName值为"#cdata-section"

  • nodeValue为CDATA区域中的内容

  • parentNode多是Document或Element

  • 不支持(没有)子节点

建立

document.createCDataSection()能够建立CDATA区域,传入参数为传入节点的内容.

DocumentType类型

这在Web浏览器中并不经常使用

特征

  • nodeType值为10

  • nodeName值为doctype名称

  • nodeValue值为null

  • parentNode是Document

  • 不支持(没有)子节点

在DOM 1级中,DocumentType对象不能动态建立,只能经过解析文档代码方式建立.支持它的浏览器会把DocumentType对象保存在document.doctype中.而且描述了DocumentType对象的3个属性:name,entities和notations.

  • name 表示文档类型名称

  • entities 即文档类型描述的尸体的NamedNodeMap对象

  • notations 是由文档类型描述的符号的NamedNodeMap对象
    一般来讲只有name是有用的,它保存了<!DOCTYPE以后的文本.

DocumentFragment类型

在全部节点类型中,只有该类型在文档中没有对应的标记.DOM规定文档片断是一种"轻量级"的文档,能够包含和控制节点,但不会和完整的文档那样占用额外资源.

特征

  • nodeType 值为11

  • nodeName 值为"#document-fragment"

  • nodeValue 为null

  • parentNode为null

  • 子节点能够是Element,ProcessingInstruction,Comment,Text,CDATASection,EntityReference

它能够说是一个文档节点的仓库

建立

document.createDocumentFragment()方法建立文档片断,它继承了Node全部的方法,咱们能够经过以前所说的方法添加节点到文档片断中,再经过方法将文档片断添加到文档中,可是这过程当中发生的并非将文档片断添加到文档树.
文档片断自己永远不会成为文档树的一部分,实际上指挥将其全部子节点添加(转移)到相应位置.

Attr类型

元素特性在DOM中以Attr类型表示,在全部浏览器中咱们均可以访问Attr类型的构造函数和原型.能够说特性就是存在于元素的attributes属性中的节点.

特征

  • nodeType值为2

  • nodeName为特性名

  • nodeValue为特性值

  • parentNode值为null

  • HTML中不支持(没有)子节点

  • XML中子节点能够是Text或EntityReference
    尽管咱们称它为节点,可是特性并不被认为是DOM文档树的一部分.

属性

  • name

  • value

  • specified
    这些在咱们以前的章节也有所介绍,再也不赘述

建立

document.createAttribute(name)能够建立相应的特性,传入参数为特性名

相关文章
相关标签/搜索