天天看點

JavaScript——DOM知識DOM樹與節點DOM的使用HTML DOM之CSS(style)屬性的使用

<a href="http://files.jb51.net/file_images/article/201409/2014093009570421.gif" target="_blank"></a>

DOM(文檔對象模型,Document Object Model)是W3C組織開發的一套便于操作XML和HTML的JavaScript方法,其将XML和HTML抽象成文檔對象(Document),并将其中所有的标簽和内容都抽象成對象(節點),利用面向對象的思對XML和HTML的操作。其中 Document 對象是DOM的頂層節點。

XML(擴充标記語言,Extensible Markup Language),主要用于資訊的存儲和傳送,HTML也是一種XML。

<a></a>

DOM核心:針對任何結構化文檔的标準模型。

XML DOM:針對 XML 文檔的标準模型。

HTML DOM:針對 HTML 文檔的标準模型。

XML DOM 是:用于 XML 的标準對象模型,用于 XML 的标準程式設計接口,中立于平台和語言的 W3C 标準。

XML DOM 定義了所有 XML 元素的對象和屬性,以及通路它們的方法(接口)。

換言之:XML DOM 是用于擷取、更改、添加或删除 XML 元素的标準。

HTML DOM 是:HTML 的标準對象模型,HTML 的标準程式設計接口的 W3C 标準。

HTML DOM 定義了所有 HTML 元素的對象和屬性,以及通路它們的方法。

換言之,HTML DOM 是關于如何擷取、修改、添加或删除 HTML 元素的标準。

其中,HTML DOM 是 XML DOM 的擴充,換言之,XML DOM 的方法均可以使用在HTML中,而反過來,HTML DOM 的方法不可以使用在XML中。

對于HTML文檔,DOM将所有的标簽全部抽象成節點,并且節點間有嚴格的等級關系,以此形成一個DOM樹。

如:

其對應的DOM樹:

其中,每一行都是兄弟節點,綠色線條代表父子關系,而紅色線條也是父子關系的一種,但是無法通過父親查找孩子而找到。

由DOM樹可見,節點分為三種:元素節點(标簽),屬性節點和文本節點。

nodeName,nodeValue,nodeType

具體如下:

節點類型/元素

nodeName

nodeValue

nodeType

元素節點

标簽名

不可用

1

屬性節點

屬性名

屬性的值

2

文本節點

#text

文本内容

3

document

#document

9

JavaScript——DOM知識DOM樹與節點DOM的使用HTML DOM之CSS(style)屬性的使用

操作目标節點的對象

添加

删除

修改

查詢

目前節點

document.createElement(name)

node.setAttribute(name,value)

node.replaceNode(newNode)

document.getElementById(id)

document.getElementsByName(name)

document.getElementsByTagName(tagName)

父節點

node.appendChild(newNode)

node.removeChild(cNode)

node.replaceChild(newNode,oldNode)

參見節點關系

綠色部分為HTML DOM方法。

nodeName:傳回節點的名稱,依據其類型。

nodeType:傳回節點的類型。

attributes:傳回元素的屬性。

childNodes:傳回元素的子節點的 NodeList。

firstChild:傳回元素的首個子節點。

lastChild:傳回元素的最後一個子節點。

parentNode:傳回元素的父節點。

nextSibling:傳回元素之後緊跟的節點。

previousSibling:傳回元素之前緊随的節點。

textContent:設定或傳回元素及其後代的文本内容。

innerTest:設定或傳回元素後代的文本内容。

innerHTML:設定或傳回元素後代的内容。[HTML DOM]

hasAttribute(name):傳回元素是否擁有指定的屬性。

hasAttributes():傳回元素是否擁有屬性。

hasChildNodes():傳回元素是否擁有子節點。

createAttribute(node):建立屬性節點。

createElement(node):建立元素節點。

createTextNode(node):建立文本節點。

appendChild(node):向節點的子節點清單末尾添加新的子節點。

cloneNode(include_all:true,false):克隆節點。

removeAttribute(name):删除指定的屬性。

removeChild(node):删除子節點。

replaceNode(newNode):替換節點。[僅IE]

replaceChild(newNode, oldNode):替換子節點。

getElementById(id):找到具有指定id的子孫元素。[HTML DOM]

getElementsByName(name):找到具有指定name的子孫元素。[HTML DOM]

getElementsByTagName(name):找到具有指定标簽名的子孫元素。

getAttribute(name):傳回屬性的值。

setAttribute():添加新屬性。

XML DOM屬性

node.innerText;

node.firstChild.nodeValue;

node.lastChild.nodeValue;

node.childNodes[0].nodeValue;

node.textContent;[IE8]

HTML DOM屬性

node.innerHTML;

擷取select下面option的文本内容。

HTML:

方法1:擷取select對象,擷取childNodes,注意暗部。

方法2:直接擷取option對象集合

擷取select對象,并通過該對象的特有方法options直接擷取option的對象集合,避免了暗部的影響。

效果:

JavaScript——DOM知識DOM樹與節點DOM的使用HTML DOM之CSS(style)屬性的使用
JavaScript——DOM知識DOM樹與節點DOM的使用HTML DOM之CSS(style)屬性的使用

當然,也可以全部用innerHTML來實作[IE10+]:

JavaScript——DOM知識DOM樹與節點DOM的使用HTML DOM之CSS(style)屬性的使用

JavaScript[HTML DOM方法]:

JavaScript——DOM知識DOM樹與節點DOM的使用HTML DOM之CSS(style)屬性的使用
JavaScript——DOM知識DOM樹與節點DOM的使用HTML DOM之CSS(style)屬性的使用

CSS樣式對象均在HTML DOM節點的style屬性中設定,具體可以檢視相關文檔。

JavaScript——DOM知識DOM樹與節點DOM的使用HTML DOM之CSS(style)屬性的使用

轉載至:http://blog.csdn.net/jacobvv/article/details/42845517

本文轉自    風雨蕭條 部落格,原文連結:       http://blog.51cto.com/1095221645/1867380 如需轉載請自行聯系原作者

<a href="http://blog.51cto.com/search/result?q=DOM" target="_blank">DOM</a>

繼續閱讀