2012-03-12 146 views
1

所以,我們都知道你可以創建JavaScript對象很簡單,如:JavaScript對象和DOM

var myObject = new Object() ; 
myObject.attribute = someValue ; 
myObject.doSomething = someFunction ; 

然後我們就可以使用中的JavaScript對象使用標準的技術來操作DOM人會除外例如:

document.getEmelemntByID("some ID").someAttribute = myObject.attribute; 

現在,這只是簡單地使用JavaScript的設施來查詢DOM找到一些元素,然後設置一個屬性,一切都很好。你可以用jQuery和其他工具來做同樣的事情,所有這些工具都基於JavaScript。

一個可以調用JavaScript函數與任何DOM提供了各種方法,如onClick,的onChange,等等,等等

所以我的問題是如何一個居然有DOM中的JavaScript對象,與說一個繪製方法,點擊方法等等。這將允許DOM執行繪製方法在DOM畫布上渲染某些東西,然後調用特定於該對象的方法,比如點擊或雙擊?

+0

簡短的回答是:你不能。 – 2012-03-12 19:06:21

回答

1

您不能在DOM中創建自己的對象類型,並使用javascript創建新的瀏覽器級事件。您必須創建瀏覽器DOM已支持的對象類型之一併使用這些對象支持的事件。可以使用本地代碼來創建瀏覽器插件(如Adobe Flash),它可以完成您所要求的某些功能,但我不認爲這就是您想要的,因爲這些插件沒有在javascript中實現,並且需要下載。

然而,您可以使用像<div>這樣的通用對象,並以任何您想要的方式響應點擊事件。由於div沒有針對點擊和繪圖的默認行爲,因此它只是DOM中的佔位符。然後,您可以在其中嵌入自己的對象,或者在其上設置屬性以創建您想要的任何視覺效果。而且,你可以處理它上面的各種事件(點擊,鍵等等),使其具有所需的行爲。所以,你可以將一個像<div>這樣的通用對象想象成腳手架,你可以在其上構建自己的對象外觀和行爲。

甚至有一種方法可以在DOM對象周圍放置一個javascript包裝器,因此大多數與該對象的交互似乎與您的javascript對象而非實際的DOM對象(這就是jQuery和YUI所做的)。但是,在下面,它仍然是一個真正的DOM對象,並帶有您自己的javascript包裝器。

1

DOM樹由Javascript對象組成,特別是不同類型的元素對象。您不能在DOM樹中放置其他對象。

DOM元素將事件用於可自定義的操作,而不是方法。例如點擊事件是在有人點擊元素時激活的。您將方法作爲事件的事件處理程序掛接,並且該方法將在事件激活時調用。