新聞中心
HTML DOM定義了訪問和操作HTML文檔的標準方法。HTML DOM 把HTML文檔呈現(xiàn)為帶有元素、屬性和文本的樹結構(節(jié)點樹)。

推薦閱讀:大話HTML DOM與XML DOM的區(qū)別與聯(lián)系
HTML DOM簡介
HTML文檔對象模型(HTML Document Object Model)定義了訪問和處理HTML文檔的標準方法。
您應當具備的基礎知識
在繼續(xù)學習之前,您需要對下面的知識有基本的了解:
◆HTML / XHTML
◆JavaScript
什么是DOM?
通過JavaScript,您可以重構整個HTML文檔。您可以添加、移除、改變或重排頁面上的項目。要改變頁面的某個東西,JavaScript就需要對HTML文檔中所有元素進行訪問的入口。這個入口,連同對HTML元素進行添加、移動、改變或移除的方法和屬性,都是通過文檔對象模型來獲得的(DOM)。
在1998年,W3C發(fā)布了***級的DOM規(guī)范。這個規(guī)范允許訪問和操作HTML頁面中的每一個單獨的元素。所有的瀏覽器都執(zhí)行了這個標準,因此,DOM的兼容性問題也幾乎難覓蹤影了。DOM可被JavaScript用來讀取、改變HTML、XHTML以及XML文檔。DOM被分為不同的部分(核心、XML及HTML)和級別(DOM Level 1/2/3):
◆Core DOM:定義了一套標準的針對任何結構化文檔的對象。
◆XML DOM:定義了一套標準的針對XML文檔的對象。
◆HTML DOM:定義了一套標準的針對HTML文檔的對象。
HTML DOM 節(jié)點
HTML文檔中的每個成分都是一個節(jié)點。
節(jié)點
根據(jù)DOM,HTML文檔中的每個成分都是一個節(jié)點。DOM是這樣規(guī)定的:
◆整個文檔是一個文檔節(jié)點
◆每個HTML標簽是一個元素節(jié)點
◆包含在HTML元素中的文本是文本節(jié)點
◆每一個HTML屬性是一個屬性節(jié)點
◆注釋屬于注釋節(jié)點
Node層次
節(jié)點彼此都有等級關系。HTML文檔中的所有節(jié)點組成了一個文檔樹(或節(jié)點樹)。HTML文檔中的每個元素、屬性、文本等都代表著樹中的一個節(jié)點。樹起始于文檔節(jié)點,并由此繼續(xù)伸出枝條,直到處于這棵樹***級別的所有文本節(jié)點為止。下面這個圖片表示一個文檔樹(節(jié)點樹):
HTML DOM 節(jié)點樹
一棵節(jié)點樹中的所有節(jié)點彼此都是有關系的。
文檔樹(節(jié)點數(shù))
- 請看下面這個HTML文檔:
DOM Tutorial DOM Lesson one
Hello world!
上面所有的節(jié)點彼此間都存在關系。除文檔節(jié)點之外的每個節(jié)點都有父節(jié)點。舉例,
和 的父節(jié)點是節(jié)點,文本節(jié)點"Hello world!"的父節(jié)點是節(jié)點。
大部分元素節(jié)點都有子節(jié)點。比方說,
節(jié)點有一個子節(jié)點:和
是同輩,因為它們的父節(jié)點均是
節(jié)點也可以擁有后代,后代指某個節(jié)點的所有子節(jié)點,或者這些子節(jié)點的子節(jié)點,以此類推。比方說,所有的文本節(jié)點都是節(jié)點的后代,而***個文本節(jié)點是
節(jié)點的后代。節(jié)點也可以擁有先輩。先輩是某個節(jié)點的父節(jié)點,或者父節(jié)點的父節(jié)點,以此類推。比方說,所有的文本節(jié)點都可把節(jié)點作為先輩節(jié)點。#p#
HTML DOM訪問節(jié)點
通過DOM,您可訪問HTML文檔中的每個節(jié)點。
查找并訪問節(jié)點
你可通過若干種方法來查找您希望操作的元素:
◆通過使用 getElementById() 和 getElementsByTagName() 方法。
◆通過使用一個元素節(jié)點的parentNode、firstChild以及l(fā)astChild屬性。
getElementById() 和 getElementsByTagName()
getElementById() 和 getElementsByTagName()這兩種方法,可查找整個HTML文檔中的任何HTML元素。
這兩種方法會忽略文檔的結構。假如您希望查找文檔中所有的
元素,getElementsByTagName()會把它們全部找到,不管
元素處于文檔中的哪個層次。同時,getElementById()方法也會返回正確的元素,不論它被隱藏在文檔結構中的什么位置。這兩種方法會像您提供任何你所需要的HTML元素,不論它們在文檔中所處的位置!getElementById()可通過指定的ID來返回元素:
- document.getElementById("ID");
注釋:getElementById() 無法工作在XML中。在XML文檔中,您必須通過擁有類型id的屬性來進行搜索,而此類型必須在XML DTD中進行聲明。
getElementsByTagName() 方法會使用指定的標簽名返回所有的元素(作為一個節(jié)點列表),這些元素是您在使用此方法時所處的元素的后代。getElementsByTagName() 可被用于任何的HTML元素:
getElementsByTagName() 語法
- document.getElementsByTagName("標簽名稱");
或者:
- document.getElementById('ID').getElementsByTagName("標簽名稱");
實例 1
下面這個例子會返回文檔中所有
元素的一個節(jié)點列表:
- document.getElementsByTagName("p");
實例 2
下面這個例子會返回所有
元素的一個節(jié)點列表,且這些
元素必須是id為"maindiv"的元素的后代:
- document.getElementById('maindiv').getElementsByTagName("p");
節(jié)點列表(nodeList)
當我們使用節(jié)點列表時,通常要把此列表保存在一個變量中,就像這樣:
- var x=document.getElementsByTagName("p");
現(xiàn)在,變量x包含著頁面中所有
元素的一個列表,并且我們可以通過它們的索引號來訪問這些
元素。注釋:索引號從0開始。您可以通過使用length屬性來循環(huán)遍歷節(jié)點列表:
- var x=document.getElementsByTagName("p");
- for (var i=0;i
- {
- // do something with each paragraph
- }
您也可以通過索引號來訪問某個具體的元素。要訪問第三個
元素,您可以這么寫:
- var y=x[2];
parentNode、firstChild以及l(fā)astChild
這三個屬性 parentNode、firstChild 以及 lastChild 可遵循文檔的結構,在文檔中進行“短距離的旅行”。請看下面這個HTML片段:
John Doe Alaska
在上面的HTML代碼中,***個
- var x=[a paragraph];
- var text=x.firstChild.nodeValue;
parentNode屬性常被用來改變文檔的結構。假設您希望從文檔中刪除帶有id為"maindiv"的節(jié)點:
- var x=document.getElementById("maindiv");
- x.parentNode.removeChild(x);
首先,您需要找到帶有指定id的節(jié)點,然后移至其父節(jié)點并執(zhí)行removeChild()方法。
#p#
根節(jié)點
有兩種特殊的文檔屬性可用來訪問根節(jié)點:
- document.documentElement
- document.body
***個屬性可返回存在于XML以及HTML文檔中的文檔根節(jié)點。第二個屬性是對HTML頁面的特殊擴展,提供了對
標簽的直接訪問。HTML DOM 節(jié)點信息
nodeName、nodeValue以及nodeType包含有關于節(jié)點的信息。
節(jié)點信息
每個節(jié)點都擁有包含著關于節(jié)點某些信息的屬性。這些屬性是:
◆nodeName(節(jié)點名稱)
◆nodeValue(節(jié)點值)
◆nodeType(節(jié)點類型)
nodeName
nodeName屬性含有某個節(jié)點的名稱。
◆元素節(jié)點的nodeName是標簽名稱
◆屬性節(jié)點的nodeName是屬性名稱
◆文本節(jié)點的nodeName永遠是#text
◆文檔節(jié)點的nodeName永遠是#document
注釋:nodeName所包含的XML元素的標簽名稱永遠是大寫的
nodeValue
◆對于文本節(jié)點,nodeValue屬性包含文本。
◆對于屬性節(jié)點,nodeValue屬性包含屬性值。
◆nodeValue屬性對于文檔節(jié)點和元素節(jié)點是不可用的。
nodeType
nodeType屬性可返回節(jié)點的類型。最重要的節(jié)點類型是:
一個 HTML DOM 實例
下面這個例子向我們展示了當一個用戶在文檔中點擊時,HTML文檔的背景顏色如何被改變。
- Click on this document!
原文鏈接:http://www.webjx.com/htmldata/2007-09-21/1190376115.html
本文標題:HTMLDOM入門級知識手冊
當前鏈接:http://www.dlmjj.cn/article/cdodhcc.html


咨詢
建站咨詢
