DOM
DOM(文檔對象模型)是針對HTML和XML文檔的一個API。描繪了一個層次化的節(jié)點樹,允許開發(fā)人員添加,修改和刪除頁面的某一個部分。
-
節(jié)點層次
- DOM可以將任何HTML或XML文檔描繪成一個由多層節(jié)點構(gòu)成的結(jié)構(gòu)。
- 節(jié)點分為幾種不同的類型。每種類型分別表示文檔中不同的信息或標記。
- 每個節(jié)點都有各自的特點,方法和數(shù)據(jù)。
- 每個節(jié)點之間和其他節(jié)點之間存在某種關(guān)系。
- 節(jié)點之間的關(guān)系構(gòu)成了層次,而所有頁面標記則表現(xiàn)為一個以特定節(jié)點為根節(jié)點的樹形結(jié)構(gòu)。
- 文檔節(jié)點是每個文檔的根節(jié)點。
-
<html>元素稱為文檔元素。文檔元素是文檔的最外層元素,文檔中的其他所有元素都是包含在文檔元素中。 - 每個文檔都只能有一個文檔元素。在HTML中,文檔元素始終都是
<html>元素。在XML中,沒有預(yù)定義的元素,則任何元素都有可能是文檔元素。 - 每一段標記都可以用樹中的一個節(jié)點表示。
-
Node類型
- 這個Node接口在JavaScript中是作為Node類型實現(xiàn)的;除了IE外,在其他所有瀏覽器中都可以訪問到這個類型。
- JavaScript中的所有節(jié)點類型都是繼承自Node類型,因此,所有節(jié)點類型都共享相同的基本屬性和方法。
- 每個節(jié)點都有一個nodeType屬性,用于表示節(jié)點類型。節(jié)點類型由在Node類型中定義的下列12個數(shù)據(jù)常量表示,任何節(jié)點必居其一。
常量名 常量值 節(jié)點類型 描述 Node.ELEMENT_NODE 1 Element 代表元素 Node.ATTRIBUTE_NODE 2 Attr 代表屬性 Node.TEXT_NODE 3 Text 代表元素或?qū)傩灾械奈谋緝?nèi)容 Node.CDATA_SECTION_NODE 4 CDATASection 代表文檔中的 CDATA 部(不會由解析器解析的文本) Node.ENTITY_REFERENCE_NODE 5 EntityReference 代表實體引用 Node.ENTITY_NODE 6 Entity 代表實體 Node.PROCESSING_INSTRUCTION_NODE 7 ProcessingInstruction 代表處理指令 Node.COMMENT_NODE 8 Comment 代表注釋 Node.DOCUMENT_NODE 9 Document 代表整個文檔(DOM 樹的根節(jié)點) Node.DOCUMENT_TYPE_NODE 10 DocumentType 向為文檔定義的實體提供接口 Node.DOCUMENT_FRAGMENT_NODE 11 DocumentFragment 代表輕量級的 Document 對象(文檔的某個部分) Node.NOTATION_NODE 12 Notation 代表 DTD 中聲明的符號 - 由于IE沒有公開Node類型的構(gòu)造函數(shù),所以為了確??鐬g覽器兼容問題,最好是將nodeType屬性與數(shù)字值進行比較。
- 對于元素節(jié)點,nodeName中保存的值始終是元素的標簽名(大寫),而nodeValue的值始終為null。
- 對于屬性節(jié)點的 nodeName 是屬性名稱,nodeValue 屬性包含屬性值。
- 對于文本節(jié)點的 nodeName 永遠是 #text,nodeValue 屬性包含文本。
- 節(jié)點關(guān)系
- 每個節(jié)點都有一個childNodes屬性,返回一個NodeList對象。該對象是一個類數(shù)組對象,用于保存一組有序的節(jié)點,可以通過位置來訪問這些節(jié)點。且該對象有l(wèi)ength屬性,但它不是Array的實例。該對象是基于DOM結(jié)構(gòu)動態(tài)執(zhí)行查詢的結(jié)果,就是說DOM結(jié)構(gòu)的變化會自動反映到該對象中。
- 每個節(jié)點都有一個parentNode屬性,返回該節(jié)點的父節(jié)點。每個節(jié)點的previousSibling和nextSibling屬性,分別返回該節(jié)點的上一個和下一個節(jié)點。
- 每個節(jié)點都有hasChildNodes()方法,這個方法在該節(jié)點包含一個或多個節(jié)點的情況下返回true。
- 每個節(jié)點都有一個ownerDocument屬性,返回表示整個文檔的文檔節(jié)點。這種關(guān)系表示的是任何節(jié)點都屬于它所在的文檔,任何節(jié)點都不能同時存在于兩個或多個文檔中。
- 操作節(jié)點
- appendChild() 用于向childNodes列表的末尾添加節(jié)點。如果傳入該方法中的節(jié)點是文檔的一部分,那么該傳入的節(jié)點就會被移動到新的位置。
- insertBefore() 用于向childNode列表中特定的位置添加節(jié)點。接收兩個參數(shù):要插入的節(jié)點和作為參照的節(jié)點,同時該方法被返回。插入的節(jié)點會被插入到參照節(jié)點的前一個位置。如果參照節(jié)點是null,那么效果等同于appendChild。
- replaceChild() 用于替換節(jié)點,接收兩個參數(shù):要插入的節(jié)點和替換的節(jié)點。要替換的節(jié)點將有這個方法返回并從文檔樹中剔除,同時由要插入的節(jié)點占據(jù)其位置。使用該方法插入一個節(jié)點時,該節(jié)點的所有關(guān)系指針都會從被他所替換的節(jié)點復(fù)制過來。替換的節(jié)點仍在文檔中,但文檔中沒有其位置了。
- removeChild() 用于移除節(jié)點,接收一個參數(shù):要移除的節(jié)點。被移除的節(jié)點成為該方法的返回值。移除的節(jié)點仍在文檔中,但文檔中沒有其位置了。
- cloneNode() 用于創(chuàng)建調(diào)用該方法的節(jié)點的一個完全相同的副本。接收一個布爾值:表示是否執(zhí)行深復(fù)制。在參數(shù)為true下,執(zhí)行深復(fù)制,就是復(fù)制節(jié)點以及其整個子節(jié)點樹,但是不會復(fù)制添加到DOM樹節(jié)點中的JavaScript屬性,如事件處理程序等(注意:IE中有一個BUG,它會復(fù)制事件處理程序,因此在復(fù)制之前最好移除事件處理程序);在參數(shù)為false下,執(zhí)行淺復(fù)制,即只復(fù)制該節(jié)點,復(fù)制后的節(jié)點歸文檔所有,但并沒有為他指定父節(jié)點,所以這個節(jié)點在文檔中類似于“孤兒”。
-
Document類型
document對象是HTMLDocument的一個實例,表示整個HTML頁面。document對象是window對象的一個屬性,因此可以將其作為全局對象來訪問。
-
Document節(jié)點有以下特征:
- nodeType的值為9
- nodeName的值為"#document"
- nodeValue的值為null
- parentNode的值為null
- ownerDocument的值為null
- 其子節(jié)點可能是一個DocumentType(最多一個),Element(最多一個),ProcessingInstruction或Comment
-
文檔的子節(jié)點
- 訪問document節(jié)點的html子節(jié)點內(nèi)置的訪問方法
- documentElement屬性,該屬性始終指向HTML頁面中的
<html> - 通過document.childNodes[0]列表來訪問
- 通過document.firstChild來訪問
- documentElement屬性,該屬性始終指向HTML頁面中的
- document.body直接指向
<body>元素 - document.doctype可以訪問
<!DOCTYPE>元素,不同瀏覽器有差異- IE8及之前的版本:如果存在文檔類型聲明,會將其錯誤的解釋為一個注釋并把它當(dāng)成Comment節(jié)點;而document.doctype的值始終為null。
- IE9+以及Firefox:如果存在文檔類型聲明,則將其作為文檔的第一個子節(jié)點;document.doctype是一個Document節(jié)點,也可以通過document.firstChild或document.childNodes[0]來訪問同一個節(jié)點。
- Safari,chrome和Opera:如果存在文檔類型聲明,將其解析,但不作為文檔的子節(jié)點。document.doctype是一個Document節(jié)點,但該節(jié)點不會出現(xiàn)在document.childNodes中。
-
<html>元素外部的注釋在不同瀏覽器中處理不同<!-- 第一條注釋 --> <html></html> <!-- 第二條注釋 -->- ie8及之前的版本,Safari 3.1及更高的版本,opera和chrome 只會為第一條注釋創(chuàng)建節(jié)點,不為第二條注釋創(chuàng)建節(jié)點。因此第一條注釋會成為document.childNodes中的第一個節(jié)點、
- ie9及更高的版本,將第一條注釋創(chuàng)建為document.childNodes中的一個注釋節(jié)點,也將第二條注釋創(chuàng)建為document.childNodes中的注釋節(jié)點。
- Firefox以及Safari 3.1之前的版本會完全忽略這兩條注釋。
- 訪問document節(jié)點的html子節(jié)點內(nèi)置的訪問方法
-
文檔信息
- document.title 包含
<title>元素中的文本,會顯示在瀏覽器窗口的標題欄或標簽頁上。修改title屬性值也會改變<title>元素。 - document.URL 包含頁面完整的URL(即地址欄中顯示的URL)。
- document.domain 只包含頁面的域名。不能將這個屬性值設(shè)置為URL中不包含的域。
- document.referrer 包含鏈接到當(dāng)前頁面的那個頁面的URL。在沒有頁面來源的情況下,可能為空字符串。
- 解決跨域問題的一個方法:
- 由于跨域安全限制,來自不同子域的頁面無法通過JavaScript通信。而將每個頁面的document.domain設(shè)置為相同的值,那么這些頁面就可以互相訪問對方包含的JavaScript對象。
- 例如,一個頁面加載自
www.wrox.com,其中包含一個內(nèi)嵌框架,這個內(nèi)嵌框架的頁面加載自p2p.worx.com。如果將document.domain值都設(shè)置為"wrox.com",那么他們之間就能相互通信了。
- document.title 包含
-
查找元素
- document.getElementById() 接收一個參數(shù):要取得的元素ID。如果找到相應(yīng)的元素則返回該元素,如果不存在則返回null。注意ID必須嚴格匹配,包括大小寫。如果頁面中有多個元素的ID相同,返回第一次出現(xiàn)的元素。
- document.getElementByTagName() 接收一個參數(shù):要取得的元素標簽名,返回的是包含零個或多個元素的NodesList。在HTML文檔中,返回的是HTMLCollection對象,類似于NodeList對象。
- HTMLCollection對象中的項訪問方式
- 使用方括號中使用數(shù)值語法或item()
- 使用nameItem()方法,該方法接收的參數(shù)為要查找的元素的name屬性值
- 使用方括號中使用查找的元素的name屬性值
- 如果傳入?yún)?shù)為*,則表示要獲取全部標簽,按照它們出現(xiàn)的先后順序出現(xiàn)。
- HTMLCollection對象中的項訪問方式
- document.getElementByName() 接收一個參數(shù):要取得元素的name屬性值,返回所有具有該name屬性值的元素。
-
特殊集合
- document.anchors 包含文檔中所有帶name特性的
<a>元素。 - document.forms 包含文檔中所有的
<form>元素。 - document.images 包含文檔中所有的
<img>元素。 - document.links 包含文檔中所有帶href特性的
<a>元素。
- document.anchors 包含文檔中所有帶name特性的
-
DOM一致性檢測:檢測瀏覽器實現(xiàn)了DOM的哪些部分,可以使用document.implementation.hasFeature()方法,該接收兩個參數(shù):要檢測的DOM功能的名稱和版本號。如果瀏覽器支持給定名稱和版本的功能,則返回true,否則返回false。
檢測的不同的值及版本號 -
文檔寫入
- document.write() 接收一個字符串參數(shù),即要寫入到輸出流中的文本??蓜討B(tài)的向頁面中加入內(nèi)容
- document.writeln() 接收一個字符串參數(shù),即要寫入到輸出流中的文本,但會在字符串的末尾加上一個換行符??蓜討B(tài)的向頁面中加入內(nèi)容
- document.open() 打開網(wǎng)頁的輸出流
- document.close() 關(guān)閉網(wǎng)頁的輸出流
-
Element類型
- 該類型用于表現(xiàn)XML或HTML元素,提供了對元素標簽名,子節(jié)點及特性的訪問。
- Element節(jié)點具有以下特征:
- nodeType的值為1
- nodeName的值為元素的標簽名
- nodeValue的值為null
- parentNode的值為Document或Element
- 其子節(jié)點可能是Element,Text,Comment,ProcessiongInstruction,CADTASection或EntityReference
- 要訪問元素的標簽名,可以使用nodeName,也可以使用tagName
- HTML元素:任何元素的所有特性,都可以通過DOM元素本身的屬性來直接訪問。
- 所有HTML元素都由HTMLElement類型表示,不是直接通過這個聯(lián)系,也是通過它的子類型來表示。HTMLElement類型直接繼承自Element并添加了一些屬性。添加的屬性分別對應(yīng)于每個HTML元素中都存在的下列標準特性。
- id,元素在文檔中的唯一標識符
- title,有關(guān)元素的附加說明信息,一般通過工具提示條顯示出來
- lang,元素的語言代碼
- dir,語言的方向,值為"ltr"從左到右或"rtl"從右到左
- className,為元素指定的CSS類
- 所有HTML元素都由HTMLElement類型表示,不是直接通過這個聯(lián)系,也是通過它的子類型來表示。HTMLElement類型直接繼承自Element并添加了一些屬性。添加的屬性分別對應(yīng)于每個HTML元素中都存在的下列標準特性。
- 取得特性:getAttribute() 接收一個參數(shù):要取得的特性名
- 該方法也能獲取到自定義特性
- 特性的名稱是不區(qū)分大小寫的,即"id"與"ID"是同一特性
- 當(dāng)特性是style時,返回的是CSS文本
- 當(dāng)特性是onclick這樣的事件處理程序,返回相應(yīng)代碼的字符串
- 設(shè)置特性:setAttribute() 接收兩個參數(shù):要設(shè)置的特性名和值
- 如果特性已經(jīng)存在,則會用指定的值替換現(xiàn)有的值;如果不存在,則新建該屬性并賦值。
- 通過這個方法設(shè)置的特性名會被統(tǒng)一轉(zhuǎn)換為小寫形式。
- 刪除特性:removeAttribute() 接收一個參數(shù):即要刪除特性的名稱。會清除特性的值,也會將該特性從元素中徹底刪除。
- attribute屬性
- Element類型是使用attribute屬性的唯一一個DOM節(jié)點類型。attribute屬性中包含一個NameNodeMap,與NodeList類似。元素的每一個特性都由一個Attr節(jié)點表示,每個節(jié)點都保存在NameNodeMap對象中。該對象有以下方法:
- getNameItem(name):返回nodeName屬性等于name的節(jié)點
- removeNameItem(name):從列表中刪除nodeName屬性等于name的節(jié)點,并返回被刪除特性的attr節(jié)點
- setNameItem(node):向列表中添加節(jié)點,以節(jié)點的nodeName屬性為索引
- item(pos):返回位于數(shù)字pos位置處的節(jié)點
- attribute屬性中包含一系列節(jié)點,每個節(jié)點的nodeName就是特性的名稱,而節(jié)點的nodeValue就是特性的值。
- 對于attribute對象中的屬性,不同瀏覽器返回的順序不同。這些特性在XML或HTML代碼中的先后順序,不一定與它們出現(xiàn)在attribute對象中的順序一致。
- Element類型是使用attribute屬性的唯一一個DOM節(jié)點類型。attribute屬性中包含一個NameNodeMap,與NodeList類似。元素的每一個特性都由一個Attr節(jié)點表示,每個節(jié)點都保存在NameNodeMap對象中。該對象有以下方法:
- 創(chuàng)建元素:document.createElement() 接收一個參數(shù):即要創(chuàng)建元素的標簽名。這個標簽名在HTML文檔中不分大小寫,但在XML文檔中區(qū)分。
- 在IE中,可以在該方法中傳入完整的元素標簽,也可以包含屬性。
- 一些問題可以通過傳入完整的元素標簽來解決:
- 不能設(shè)置動態(tài)創(chuàng)建的
<iframe>元素的name特性 - 不能通過表單的reset()方法重設(shè)動態(tài)創(chuàng)建的
<input>元素 - 動態(tài)創(chuàng)建的type特性值為"reset"的
<button>元素重設(shè)不了表單 - 動態(tài)創(chuàng)建的一批name相同的單選按鈕彼此毫無關(guān)系
- 不能設(shè)置動態(tài)創(chuàng)建的
-
Text類型
- 文本節(jié)點由Text類型表示,包含的是可以照字面解釋的純文本內(nèi)容。純文本內(nèi)容可以包含轉(zhuǎn)義后的HTML字符,但不能包含HTML代碼。
- Text節(jié)點具有以下特征:
- nodeType的值為3
- nodeName的值為"#text"
- nodeValue的值為節(jié)點所包含的文本
- parentNode的值Element
- 不支持(沒有)子節(jié)點
- 可以通過nodeValue屬性或data屬性來訪問Text節(jié)點包含的文本,這兩個屬性中包含的值相同。
- 操作節(jié)點中的文本方法:
- appendData(text):將text添加到文本的末尾
- deleteData(offset,count):從offset指定的位置開始刪除count個字符
- insertData(offset,text):在offset指定的位置插入text
- replaceData(offset,count,text):用text替換從offset指定的位置開始到offset+count為止處的文本
- spliceText(offset):從offset指定為止將當(dāng)前文本節(jié)點分成兩個文本節(jié)點
- substringData(offset,count):提取從offset指定的位置開始到offset+count為止處的字符串
- 文本節(jié)點還有l(wèi)ength屬性,保存節(jié)點中字符的數(shù)目。nodeValue.length和data.length保存相同的值。
- 在默認下,每個可以包含內(nèi)容的元素最多只能有一個文本節(jié)點,而且必須有內(nèi)容存在。
- 創(chuàng)建文本節(jié)點:document.createTextNode() 接收一個參數(shù):要出入節(jié)點的文本或完整的HTML代碼(含文本)。
- 如果兩個文本節(jié)點是相鄰的同胞節(jié)點,那么這兩個節(jié)點的文本就會連接起來,中間不會有空格。
- 規(guī)范文本節(jié)點:如果一個父元素包含兩個或多個文本節(jié)點,可以調(diào)用normalize()方法,將所有節(jié)點合并成一個節(jié)點,結(jié)果節(jié)點的nodeValue等于合并前每個文本節(jié)點的nodeValue值拼接的值。
- 分隔文本節(jié)點:spliceText(offset)將一個文本節(jié)點分割成兩個文本節(jié)點,按照指定位置分隔nodeValue值。原來的文本節(jié)點將包含從開始到指定位置之前的內(nèi)容,新節(jié)點包含剩下的文本。該方法返回一個新文本節(jié)點,該節(jié)點與原節(jié)點的parentNode相同。
-
Comment類型
- 注釋在DOM中是通過Comment類型表示的。
- Comment節(jié)點具有以下特征:
- nodeType的值為8
- nodeName的值為"#comment"
- nodeValue的值為注釋的內(nèi)容
- parentNode的值Element或Document
- 不支持(沒有)子節(jié)點
- Comment類型與Text類型繼承自相同的類,因此它也擁有除splitText之外的所有字符串操作方法。
- 可以通過nodeValue或data屬性來取得注釋的內(nèi)容。
- 使用document.createComment()并為其傳遞注釋文本可以創(chuàng)建注釋節(jié)點。
-
CDATASection類型
- 該類型只針對XML文檔,表示的是CDATA區(qū)域。
- 與Comment類似,擁有除了擁有除splitText之外的所有字符串操作方法。
- 具有以下特征:
- nodeType的值為4
- nodeName的值為"#cdata-section"
- nodeValue的值為CDATA區(qū)域中的內(nèi)容
- parentNode的值Element或Document
- 不支持(沒有)子節(jié)點
- 在真正的XML文檔中,可以使用document.createCDataSection()來創(chuàng)建CDATA區(qū)域,只需傳入節(jié)點的內(nèi)容即可。
-
DocumentType類型
- 在web瀏覽器中并不常用,僅有Firefox,safari和opera支持。
- 包含著與文檔的doctype有關(guān)的所有信息,具有以下特征:
- nodeType的值為10
- nodeName的值為doctype的名稱
- nodeValue的值為null
- parentNode的值Document
- 不支持(沒有)子節(jié)點
- 在DOM1級中,DocumentType對象不能動態(tài)創(chuàng)建,而只能通過解析文檔代碼的方式創(chuàng)建。支持它的瀏覽器會把DocumentType對象保存在document.doctype中。
- DOM1級描述了DocumentType對象的三個屬性:
- name 表示文檔類型的名稱
- entities 由文檔類型描述的實體的NameNodeMap對象
- notations 由文檔類型描述的符號的NameNodeMap對象
- 通常,瀏覽器中的文檔使用的都是HTML或XHTML文檔類型,所以entities和notations一般為空列表。
-
DocumentFragment類型
- 在所有節(jié)點類型中,只有DocumentFragment在文檔中沒有對應(yīng)的標記。DOM規(guī)定文檔片段是一種輕量級的文檔,可以包含和控制節(jié)點,但不會像完整文檔那樣占用額外的資源。
- 具有以下特征:
- nodeType的值為11
- nodeName的值為"document-fragment"
- nodeValue的值為null
- parentNode的值null
- 其子節(jié)點可能是Element,Text,Comment,ProcessiongInstruction,CADTASection或EntityReference
- 創(chuàng)建文檔片段,可以使用document.createDocumentFragment()方法,不需要傳參。
- 文檔片段繼承了Node的所有方法,通常用于執(zhí)行那些用于針對文檔的DOM操作。
- 如果將文檔中的節(jié)點添加到文檔片段中,就會從文檔樹中刪除該節(jié)點,也不會在瀏覽器中看到該節(jié)點。添加到文檔片段中的新節(jié)點同樣也不屬于文檔樹??梢酝ㄟ^appendChild()或insertBefore()將文檔片段中內(nèi)容添加到文檔樹中。在將文檔片段作為參數(shù)傳遞給這兩個方法時,實際上只會將文檔片段的所有子節(jié)點添加到相應(yīng)位置上;文檔片段永遠不會成為文檔樹的一部分。
- 假設(shè)要為一個
<ul>元素添加列表項,如果逐個添加列表項,將會導(dǎo)致瀏覽器反復(fù)渲染新信息。為避免這個問題,可以先將列表項添加到文檔片段中,然后一次性添加到文檔中。
-
Attr類型
- 元素的特性在DOM以Attr類型表示。在所有瀏覽器中(包含IE8),都可以訪問Attr類型的構(gòu)造函數(shù)和原型。
- 從技術(shù)角度看,特性就是存在于元素的attributes屬性中的節(jié)點。特性節(jié)點有以下特征:
- nodeType的值為2
- nodeName的值為特性的名稱
- nodeValue的值為特性的值
- parentNode的值null
- 在HTML中不支持(無)子節(jié)點
- 在XML中子節(jié)點可以是text或EntityReference
- Attr對象的三個屬性:
- name 特性名稱,與nodeName值相同
- value 特性的值,與nodeValue值相同
- specified 布爾值,區(qū)別特性是在代碼中指定的還是默認的
- 使用document.createAttribute()并傳入特性名稱可以創(chuàng)建新的特性節(jié)點。
- 將新創(chuàng)建的特性節(jié)點添加到元素中,必須使用元素的setAttributeNode()方法。添加特性后,可以通過以下方法來訪問特性:attributes屬性,getAttributeNode()方法或getAttribute()方法。其中,attributes屬性,getAttributeNode()方法都會返回對應(yīng)特性的節(jié)點,getAttribute()方法只會返回特性的值。
動態(tài)腳本是指頁面加載時不存在,但將來的某一時刻通過修改DOM動態(tài)添加的腳本。創(chuàng)建的兩種方式:插入外部文件和直接插入JavaScript代碼。
動態(tài)樣式是指頁面加載時不存在的樣式,頁面加載完成后動態(tài)添加到頁面中的。加載外部樣式文件的過程時異步的,也就是加載樣式和執(zhí)行JavaScript代碼的過程沒有固定的次序。
-
操作表格
- 為
<table>添加的屬性和方法如下
屬性和方法 說明 caption 保存著對 <caption>元素(如果有)的指針tBodies 是一個 <tbody>元素的HTMLCollectiontFoot 保存著對 <tfoot>元素(如果有)的指針tHead 保存著對 <thead>元素(如果有)的指針rows 是一個表格中所有行的HTMLCollection createTHead 創(chuàng)建 <thead>元素,并將其放入到表格中,返回引用createTFoot 創(chuàng)建 <tfoot>元素,將其放到表格中,返回引用createCaption 創(chuàng)建 <caption>元素,將其放到表格中,返回引用deleteTHead 刪除 <thead>元素deleteTFoot 刪除 <tfoot>元素deleteCaption 刪除 <caption>元素deleteRow(pos) 刪除指定位置的行 insertRow(pos) 向rows集合中的指定位置插入一行 - 為
<tbody>添加的屬性和方法如下
屬性和方法 說明 rows 保存著 <tbody>元素中行的HTMLCollectiondeleteRow(pos) 刪除指定位置的行 insertRow(pos) 向rows集合中的指定位置插入一行,返回對新插入行的引用 - 為
<tr>添加的屬性和方法如下
屬性和方法 說明 cells 保存著 <tr>元素中單元格的HTMLCollectiondeleteCell(pos) 刪除指定位置的單元格 insertCell(pos) 向cells集合中的指定位置插入一個單元格,返回對新插入單元格的 - 為
-
使用NodeList
- NodeList,NameNodeMap以及HTMLCollection這三個集合都是動態(tài)的,即每當(dāng)文檔結(jié)構(gòu)發(fā)生變化時,它們都會得到更新。因此,它們始終會保存著最新,最準確的信息。
- 本質(zhì)上,所有NodeList對象都是在訪問DOM文檔時實時運行的查詢。
