2011-09-30 98 views
0

我正在使用YUI2框架。如何獲取YUI對象

我希望能夠獲得對頁面上創建的對象的引用。如果可能的話,我不想更改現有的JS代碼以在其創建時存儲全局句柄。

的頁面上有這樣的事情:

<script type="text/javascript">//<![CDATA[ 
new FirstRate.Reporter("report1").setOptions(
    { 
     inData: "testfunc" 
    })); 
//]]></script> 

我沒有看到具體YAHOO.util.Dom查找對象的任何方法。 如何獲得FirstRate.Reporter的對象引用?有什麼可以枚舉頁面上的對象嗎?

謝謝

回答

1

YUI包含許多用於在網頁DOM中查找對象的方法。 YAHOO.util.DOM包含方法:

HTMLElement | Array get (el) 
Array getElementsBy (method , tag , root , apply , o , overrides) 
HTMLElement getElementBy (method , tag , root) 
Array getElementsByClassName (className , tag , root , apply , o , overrides) 

等等。這些從DOM中檢索對象。要使用YUI2在頁面中查找對象,通常會使用標記類型,類名稱或ID的某種組合來使用YUI方法查詢頁面以查找所需的對象。如果你給它一個唯一的id值,然後你可以使用YAHOO.util.DOM.get(「myObject」)來檢索它(這裏的「myObject」是HTML的id元件)。


如果您想獲得常規javascript對象,那麼您必須將自己的引用存儲在您自己的javascript變量中。除了使用一些UI小部件(其中也包含DOM元素)時,YUI不會爲您做到這一點。

如果你想保持這樣的結果的軌跡:

new FirstRate.Reporter("report1").setOptions(
    { 
     inData: "testfunc" 
    }) 

然後,你必須把它分配給一個變量或對象,其範圍使得它能夠持續足夠長的時間,你的屬性使用它。

var theReporter = new FirstRate.Reporter("report1").setOptions(
    { 
     inData: "testfunc" 
    }) 

myObject.reporter = new FirstRate.Reporter("report1").setOptions(
    { 
     inData: "testfunc" 
    }) 

其中myObject是您創建並存儲一些其他的對象。

1

JavaScript對象不是DOM的一部分。 DOM是文檔對象模型,它是關於HTML文檔中的對象,如divs,窗體,輸入等,這是瀏覽器顯示的對象類型。

JavaScript中沒有對象的「全局枚舉」。有全局變量。

我不想改變現有的JS代碼到一個全局句柄存儲它

所以,你不希望使用全局變量。但爲什麼? 。

這是做到這一點的唯一方法,而且它也很簡單:

VAR myGlobalVar =新FirstRate.Reporter( 「報告1」)setOptions({INDATA: 「testfunc」}));

在這裏,您將在全局變量myGlobalVar中存儲對象(如您所說的「句柄」),您可以在以後訪問另一部分JavaScript代碼。