DOM教程入門手冊
這里向大家簡單介紹一下DOM的概念,當(dāng)瀏覽器支持JavaScript的時候就有DOM了,最早可以追溯到Netscape2。Web開發(fā)人員希望訪問HTML元素并且改變它們的屬性。例如實(shí)現(xiàn)HTML元素的淡入淡出這種效果。DOM的功能就是提供這么一種方法來訪問HTML元素。
DOM入門教程之什么是DOM(Dom簡介)
簡單的說,文件對象模型(DocumentObjectModel,DOM)是一種理念,一種思想,一種方法使Web開發(fā)人員可以訪問HTML元素!它只是一種理念,不是具體方法。那什么是具體方法呢?答案是DHTML
當(dāng)瀏覽器支持JavaScript的時候就有DOM了,最早可以追溯到Netscape2。Web開發(fā)人員希望訪問HTML元素并且改變它們的屬性。例如實(shí)現(xiàn)HTML元素的淡入淡出這種效果。DOM的功能就是提供這么一種方法來訪問HTML元素。精確的規(guī)定用什么方法,怎樣訪問元素。隨著瀏覽器版本的更新,會有更多的權(quán)限交給開發(fā)人員來操作HTML元素。DOM是給HTML與XML文件使用的一組API。它提供了文件的結(jié)構(gòu)表述(representation),讓你可以更動其中的內(nèi)容及可見物。其本質(zhì)是建立網(wǎng)頁與Script或程序語言溝通的橋梁。
所有網(wǎng)頁設(shè)計(jì)師可操作及建立文件的屬性、方法及事件都以[對象]來展現(xiàn)(例如,document就代表「文件本身」這個對象,table對象則代表HTML的表格對象等等)。這些對象可以由當(dāng)今大多數(shù)的瀏覽器以Script來取用。
DOM最常被用以[與JavaScript溝通],也就是說雖然程序以JavaScript寫成,但使用DOM來存取頁面及其元素。無論如何,DOM本身是設(shè)計(jì)為一種獨(dú)立的程序語言,以一致的API存取文件的結(jié)構(gòu)表述;是以雖然本站的焦點(diǎn)放在JavaScript上,但DOM其實(shí)可以與[任何程序語言]共同運(yùn)作。
[全球信息網(wǎng)協(xié)會](WorldWideWebConsortium,W3C)建立了[DOM]的標(biāo)準(zhǔn),稱之為「W3CDOM」。在當(dāng)今主要瀏覽器都已正確實(shí)作的情況下,W3CDOM使強(qiáng)大、跨瀏覽器的應(yīng)用程序成真。這是眾網(wǎng)頁設(shè)計(jì)師在Netscape4與MSIE多不相容的時代從未夢想過的事情。
DOM結(jié)構(gòu):
在DOM中,我們將代表XML文件的程序設(shè)計(jì)對象,稱為節(jié)點(diǎn)(nodes)。當(dāng)InternetExplorer5處理被鏈接的XML文件并儲存于DOM中時,它會為XML文件的每一個基本組件建立一個節(jié)點(diǎn)。這些基本組件包括了元素、屬性,與處理指令DOM會使用不同形態(tài)的節(jié)點(diǎn)來代表不同形態(tài)的XML組件。例如,元素是儲存在Element節(jié)點(diǎn)中,而屬性則是儲存在Attribute節(jié)點(diǎn)中。表格1列出了這些節(jié)點(diǎn)類型最重要的部分。
節(jié)點(diǎn)形態(tài)節(jié)點(diǎn)對象所代表的XML文件組件節(jié)點(diǎn)名稱(nodeName對象屬性)節(jié)點(diǎn)的值(nodeValue對象屬性)文件(Document)文件階層中的根節(jié)點(diǎn)(代表整個XML文件)#documentNull元素(Element)元素元素形態(tài)名稱(例如,BOOK)null(包含在元素中的(Element)任何字符數(shù)據(jù),是位在一個或多個子文字節(jié)點(diǎn)中)文字(Text)屬于由這個節(jié)點(diǎn)的父節(jié)點(diǎn)所代表的元素,屬性及實(shí)體的文字。
#text父XML組件的文字屬性(Attribute)屬性(以及其它的名值對,像處理指令中的名字與值)屬性名稱(如Binding)屬性值(例如hardcover)處理指令(ProcessingInstruction)處理指令(XML宣告或自訂的處理指令)處理指令的目標(biāo)(例如xml)除了目標(biāo)之外整個處理指令的內(nèi)容(例如,Version"1.0")批注(Comment)批注#comment在批注符號中的文字CDATA區(qū)段(CDATASection)CDATA區(qū)段#cdata-sectionCDATA區(qū)段中的內(nèi)容文件類型(DocumentType)文件形態(tài)宣告出現(xiàn)在DOCTYPE宣告中的根元素的名字(例如INVENTORY)Null實(shí)體(Entity)DTD中的實(shí)體宣告實(shí)體名稱(例如image)null(實(shí)體值是位在子文字節(jié)點(diǎn)中)標(biāo)簽DTD中的標(biāo)簽宣告標(biāo)簽名稱(例如BMP)>null(卷標(biāo)的系統(tǒng)literal(Notation)是位在名為SYSTEM的子Attribute上表中用來表示不同XML文件組件的基本節(jié)點(diǎn)形態(tài)。這些類型的每一個節(jié)點(diǎn)都是一個程序設(shè)計(jì)對象,提供了存取相關(guān)組件的屬性與方法。
你可以從節(jié)點(diǎn)中的nodeName屬性獲得每個節(jié)點(diǎn)的名稱。這個名稱是以字符#起始,代表那些未在文件中命名的XML組件節(jié)點(diǎn)的標(biāo)準(zhǔn)名稱。(例如,在XML文件中的批注并未命名。因此,DOM將使用標(biāo)準(zhǔn)名稱#comment。)其它節(jié)點(diǎn)的名稱則是由指定到XML文件中相對應(yīng)組件的名稱衍生而來。(例如,代表形態(tài)BOOK元素的元素節(jié)點(diǎn)也可以命名為BOOK。)
你可以從節(jié)點(diǎn)的nodeValue屬性取得每個節(jié)點(diǎn)的節(jié)點(diǎn)值。如果XML組件擁有一個相關(guān)的值(例如,屬性),該值將會被儲存于節(jié)點(diǎn)的節(jié)點(diǎn)值中。如果XML組件并沒有節(jié)點(diǎn)值(例如,元素),則DOM將會把節(jié)點(diǎn)值設(shè)成null。
【編輯推薦】