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)能夠建立相應的特性,傳入參數爲特性名

相關文章
相關標籤/搜索