JavaScriptDOM

節(jié)點層次

文檔節(jié)點是每個文檔的根節(jié)點。<html>元素,是document的子節(jié)點,誠摯為文檔元素。文檔元素是文檔的最外層元素,文檔中的其他所有元素都包含在文檔元素中。每個文檔只能有一個文檔元素。在HTML頁面中,文檔元素始終都是<html>元素。在xml中,沒有預定義的元素,因此任何元素都可能成為文檔元素。

Node類型

DOM1級定義了一個Node接口,該接口將由DOM中的所有節(jié)點類型實現(xiàn)。這個Node接口在JavaScript中是作為Node類型實現(xiàn)的;除IE外,在其他所有瀏覽器中都可以訪問到這個類型。JavaScript中的所有節(jié)點類型都繼承自Node類型,因此所有節(jié)點類型都共享著相同的基本屬性和方法。

每個節(jié)點都有一個nodeType屬性,表示節(jié)點的類型。

Node.ELEMENT_NODE 1

Node.ATTRIBUTE_NODE 2

Node.TEXT_NODE 3

Node.CDATA_SECTION_NODE 4

Node.ENTITY_REFERENCE_NODE 5

Node.ENTITY_NODE 6

Node.PROCESSING_INSTRUCTION_NODE 7

Node.COMMENT_NODE 8

Node.DOCUMENT_NODE 9

Node.DOCUMENT_TYPE_NODE 10

Node.DOCUMENT_FRAGMENT_NODE 11

Node.NOTATION_NODE 12

并不是所有節(jié)點類型都受到Web瀏覽器的支持。最常用的就是元素和文本節(jié)點。

nodeName和nodeValue屬性

節(jié)點關系

childNodes:保存一個NodeList對象。NodeList是一個類數(shù)組對象,用于保存一組有序的節(jié)點,可以通過位置來訪問這些節(jié)點。它不是Array的實例。獨特之處在于,它實際上是結余DOM結構動態(tài)執(zhí)行查詢的結果。

訪問方式:someNode.childNodes[1];someNode.childNodes.item(1);

parentNode

previousSibling、nextSibling、firstChild、lastChild

ownerDocument

操作節(jié)點

appendChild

insertBefore

replaceChild

removeChild

其他方法

cloneNode,參數(shù)為true深復制;false,淺復制

normalize

Document類型

在瀏覽器中document對象是HTMLDocument(繼承自Document)的一個實例,表示整個HTML頁面。而且,document對象是window對象的一個屬性。因此可以將其作為全局對象來訪問。

nodeType : 9

nodeName:#document

nodeValue:null

parentNode:null

ownerDocument:null

子節(jié)點類型可能是DocumentType(最多一個)、Element(最多一個)、ProcessingInstruction或Comment。

文檔的子節(jié)點

還有兩個內置的訪問其子節(jié)點的快捷方式。documentElement,始終指向HTML頁面中的<html>元素;childNodes。

document.documentElement;//<html>

document.childNodes[0];//<html>

document.body;//<body>

子節(jié)點DocumentType:<!DOCTYPE>

通過document.doctype屬性訪問,瀏覽器支持不一。

文檔信息

title:<title>,document.title修改該值不會改變title元素

3個與頁面的請求有關:

URL:完整的URL

domain:頁面的域名

referrer:連接到當前頁面的那個頁面的URL

所有這些信息都存在于請求的HTTP頭部,值不過是通過這些屬性讓我們能夠在JavaScript中訪問他們而已。

由于跨域安全限制,來自不同紫玉的頁面無法通過JavaScript通信。而通過將每個頁面的document.domain設置為相同的值,這些頁面就可以互相訪問對方包含的JavaScript對象了。

查找元素

getElementById:要取得的元素的ID,返回一個元素

getElementsByTagName:標簽名,返回一個NodeList,其實是一個HTMLCollection對象。通過方括號、item、namedItem訪問元素。

getElementsByName:name特性

特殊集合:

document.anchors,包含文檔中所有帶name特性的<a>元素

document.applets,

document.forms,包含所有<form>元素,同document.getElementsByTagName("form")

document.images,包含文檔中所有的<img>元素,同document.getElementsByTagName("img")

document.links,包含所有帶有href特性的<a>

DOM一致性檢測

document.implementation的hasFeature方法,兩個參數(shù),要檢測的DOM功能的名稱及版本號。

文檔寫入

write、writeln、open、close

Element類型

nodeType:1

nodeName:元素的標簽名

nodeValue:null

parentNode:可能是Document或Element

子節(jié)點可能是Element、Text、Comment、ProcessingInstruction、CDATASection或EntityReference

標簽名:tagName或nodeName

HTML元素

所有HTML元素都由HTMLElement類型表示,不是直接通過這個類型,也是通過它的子類型表示。

id,元素在文檔中的唯一標識符

title,有關元素的附加說明信息,一般通過工具提示條顯式

lang,元素內容的語言代碼,很少使用

dir,語言的方向,值為ltr或rtl

className,與元素的class特性對應

取得特性

getAttribute

setAttribute

removeAttribute

不經常使用getAttribute,而是只使用對象的屬性。

attributes屬性

包含一個NamedNodeMap,與NodeList類似。

getNamedItem(name)

removeNamedItem(name)

setNamedItem(node)

item(pos)

element.attributes.getNamedItem("id").nodeValue;

element.attributes["id"].nodeValue

創(chuàng)建元素

document.createElement(),只有一個參數(shù),即要創(chuàng)建元素的標簽名。

Text元素

nodeType:3

nodeName:#text

nodeValue:包含的文本

parent:一個Element

不支持子節(jié)點

操作方法:

appendData(text)

deleteData(offset, count)

insertData(offset, text)

replaceData(offset, count, text)

splitText(offset)

substringData(offset, count)

length

修改文本節(jié)點時注意,此時的字符串會經過HTML(或XML)編碼,小于號、大于號或引號都會轉義。

創(chuàng)建文本節(jié)點

document.createTextNode()

規(guī)范化文本節(jié)點

normalize()

分割文本節(jié)點

splitText()

Comment類型

nodeType:8

nodeName:#comment

nodeValue:注釋的內容

parentNode:可能是Document或Element

不支持子節(jié)點

與Text類型繼承自相同的基類,因此擁有除splitText之外的所有字符串操作方法。

document.createComment()

CDATASection類型

只針對XML文檔,表示的是CDATA區(qū)域,與Comment類似,繼承自Text類型,擁有除了splitText外的所有字符串操作方法

nodeType:4

nodeName:#cdata-section

nodeValue:CDATA區(qū)域中的內容

parentNode:可能是Document或Element

不支持子節(jié)點

DocumentType類型

nodeType:10

nodeName:doctype的名稱

nodeValue:null

parentNode:Document?

不支持子節(jié)點

DocumentFragment類型


Attr類型

name:特性名稱

value:值

specified:布爾值,區(qū)別特性是在代碼中指定的,還是默認的

document.createAttribute

DOM操作技術

動態(tài)腳本

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容