Posted on 2010-04-22 12:31
David.Ko 閱讀(1859)
評論(0) 編輯 收藏 所屬分類:
ext
轉載于:http://hi.baidu.com/shtronger/blog/item/7dcf306174aa724deaf8f8f4.html
DOM的部分對象的層次結構。
在該層次結構中,最頂級的對象是窗口對象(window),它代表當前的瀏覽器窗口;之下是文檔對象(document)、事件對象(event)、框架對象(frame)、歷史對象(history)、地址對象(location)、瀏覽器對象(navigator)和屏幕對象(screen);在文檔對象之下包括表單(form)、圖像(image)和鏈接(link)等多種對象;在瀏覽器對象navigator之下包括MIME類型對象(mimeType)和插件對象(plugin);在表單對象之下還包括按鈕(button)、復選框(checkbox)、文件選擇框(fileUpload)等多種對象。
注意:這個圖只包括了基本的DOM對象,本教程中使用的對象都在其范圍內。這實際上只是DOM中很小的一部分。DOM的內容很豐富,可以寫一本厚厚的專著。
既然都是對象,所以每一個DOM對象都擁有屬性(描述Web頁面或文檔的變量)和方法(允許操作部分Web頁面)。復雜的對象擁有的屬性和方法相當多,如document對象。
注意:這些對象形成的是嵌套關系,而不是繼承關系。所謂嵌套,就是高層對象包含低層對象,低層對象的屬性和方法,和高層對象是相互獨立的,它們之間不
是父對象和子對象的關系。如同大盒子里可以放各種東西和小盒子、小盒子里還可以放各種東西和更小的盒子一樣。所謂繼承,就是子對象擁有父對象的一切屬性和
方法,同時可能還有自己的屬性和方法,類似于父子關系(當然還不完全一樣)。
但在DOM中,也經常把下層對象說成是“子對象”,把上層對象說成是“父對象”。這種說法是不嚴格的,因為它們之間并不是繼承關系。但是,這種說法已經約定俗稱,因此我們后面也這樣說。
需要注意的是:DOM不是JavaScript的一部分,而是內置在瀏覽器中的一個對象模型,所有語言都可以利用和操縱它,如VBScript、VB.NET、C#和Java等。JavaScript只是最早使用DOM的語言而已,當然也是人們用得最多的網頁編程語言。因此,DOM可以看成應用程序接口(API)。DOM的基本內容已經標準化了,形成了DOM 1和DOM 2規范,并被越來越多的瀏覽器所支持。DOM的高級部分仍在不斷發展中。
對象引用方法
既然是嵌套關系,當引用一個低層對象時,應該先寫父對象名,后面接著是子對象名,對象名之間用小圓點“.”隔開。例
如,document是最頂層對象window的下層對象,如果要表示文檔對象document的一個圖像子對象image9,因此引用image9對象
可以這樣寫:
window.document.image9
其實,這種引用方法在上一章的例子中已經多次使用。又如,如果要引用document對象,應使用window.document;如果要引用location對象,應使用window.location。由于window對象是默認的最上層對象,因此引用它的子對象時,可以不使用window.,也就是說,可以直接用document引用document對象,用location引用location對象。這就是為什么我們用了那么多“document.write”而不必用“window.document.write”的原因。
當引用較低層次的對象時,一般有兩種方式 ---- 使用對象索引或使用對象名(對象的name屬性),也可以使用對象的id屬性。例如,如果要引用文檔中的第一個表單對象,則可以用:
document.forms[0]
來引用,因為一個document中的各個form對象會形成一個對象數組,form[0]當然是這個數組的第一個form對象即表單對象。如果該表單的name屬性為form1(或者id屬性為form1),則可以用:
document.forms["form1"]
或直接用:
document.form1
來引用該表單。同樣,如果在名稱為form1的表單中包括一個名稱為myText的文本框,則可以用:
document.form1.myText
來引用該文本框對象。
后面我們將會看到:最好使用id屬性。要解釋原因,需要了解更多的知識,我們在本章后半部分會明白的。但在HTML教程中,主要介紹的是傳統的name屬性,因此現在我們兩個屬性都會使用的。
對應于不同的對象,通常還有一些特殊的引用方法。例如,如果要引用表單對象中包含的對象,可以使用elements數組;如果要引用文檔對象中包含的某個標記符對象(例如<p>對象),可以使用document對象的all屬性,等等