1、文檔對象模型javascript
DOM( Document Object Model)文檔對象模型,它提供了訪問、動態修改文檔的藉口,W3C指定了DOM規範,主流瀏覽器都支持。DOM由3部分組成,分別是CoreDom、XML DOM和HTML DOM。html
一、Core DOM:也稱核心DOM變成,定義了一套標準的針對任何結構化文檔的對象,包括HTML、XHTML和XML。java
二、XML DOM:定義了一套標準的針對XML文檔的對象。node
三、HTML DOM:定義了一套標準的針對HTML文檔的對象。瀏覽器
2、認識DOM節點樹。app
DOM以樹形結構組織HTML文檔,文檔中每一個標籤或者元素都是一個節點,各個節點之間都存在着關係。dom
3、訪問DOM節點。spa
一、使用getElement系列方法訪問指定節點。firefox
(1)getElementById():返回對擁有指定id的對一個對象的引用。code
<script type="text/javascript"> function getValue() { var x=document.getElementById("myHeader"); //點擊標題,彈出標題的值。 alert(x.innerHTML); } </script> <body> <h1 id="myHeader" onclick="getValue()">這是標題</h1> </body> </html>
(2)getElementsByName():返回帶有指定名稱的對象的集合。
<script type="text/javascript"> function getElements() { var x=document.getElementsByName("myInput"); //獲取頁面中名字爲myInput文本框的個數。數量爲3 alert(x.length); } </script> <input name="myInput" type="text" size="20" /><br /> <input name="myInput" type="text" size="20" /><br /> <input name="myInput" type="text" size="20" /><br /> <br /> <input type="button" onclick="getElements()" value="名爲 'myInput' 的元素有多少個?" />
(3)getElementsByTagName():返回帶有指定標籤名的對象的集合。
<script type="text/javascript"> function getElements() { var x=document.getElementsByTagName("input"); //獲取頁面中標籤名字爲input的文本框。數量爲4 alert(x.length); } </script> <input name="myInput" type="text" size="20" /><br /> <input name="myInput" type="text" size="20" /><br /> <input name="myInput" type="text" size="20" /><br /> <br /> <input type="button" onclick="getElements()" value="How many input elements?" />
二、使用層次關係訪問節點。
(1)訪問根節點:
有兩種特殊的文檔屬性可用來訪問根節點:
document.documentElement:第一個屬性可返回存在於 XML 以及 HTML 文檔中的文檔根節點。
document.body:第二個屬性是對 HTML 頁面的特殊擴展,提供了對 <body> 標籤的直接訪問。
(2)訪問父節點
parentNode:返回節點的父節點。
(3)訪問兄弟節點
firstChild:返回節點的首個子節點。若是元素沒有子節點則返回null。文本和屬性節點沒有子節點。若是是firefox瀏覽器會將空標籤算在內。IE瀏覽器不計算空標籤。
lastChild:返回節點的最後一個字節點,同 firstChild。 若是是firefox瀏覽器會將空標籤算在內。IE瀏覽器不計算空標籤。
4、操做節點的屬性值
一、Core DOM的標準方法包括如下兩種:
getAttribute("屬性名"):獲取屬性的值。
setAttribute("屬性名"):設置屬性的值。
二、HTML DOM標準方法能夠直接獲取dom.屬性。例如:img.src直接獲取圖片src屬性。
5、建立和增長節點。
createElement(tagName):按照給定的標籤名建立一個節點。
appendChild(nodeName):在已經存在節點的末尾添加新的子節點。
insertBefore(newNode,oldNode):向指定節點以前插入新的節點。其中newNode參數是必須的,表示新插入的節點;oldNode是可選的。
cloneNode(deep):複製某個節點。其中deep參數是布爾值,當deep的值爲true時,會複製指定的節點以及它的全部子節點。若是爲false,則只複製當前節點和它的屬性。
6、刪除和替換節點
removeChild(node):刪除指定的節點。
replaceChild(newNode,oldNode:將newNode替換爲oldNode。