2011-09-30 86 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代码。