如何在页面上获取YUI对象

时间:2011-09-30 00:05:47

标签: object yui enumeration

我正在使用YUI2框架。

我希望能够获得对页面上创建的对象的引用。我想不想更改现有的JS代码,以便在创建它时为其存储全局句柄。

页面上有这样的内容:

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

我没有在YAHOO.util.Dom中看到任何特定于查找对象的方法。 如何获得FirstRate.Reporter的对象引用?是否有任何内容可以枚举页面上的对象?

由于

2 个答案:

答案 0 :(得分:1)

JavaScript对象不是DOM的一部分。 DOM是文档对象模型,它是关于HTML文档中的对象,如div,表单,输入等,浏览器显示的对象类型。

JavaScript中没有对象的“全局枚举”。有全局变量。

  

我不想更改现有的JS代码来存储全局句柄

所以你不想使用全局变量。但为什么呢?

这是唯一的方法,它也很简单:

  

var myGlobalVar = new FirstRate.Reporter(“report1”)。setOptions({inData:“testfunc”}));

在这里,您将全局var myGlobalVar中的引用(如您所说的“句柄”)存储到您的对象中,稍后您可以在JavaScript代码的另一部分中访问该对象。

答案 1 :(得分: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是您创建并存储的其他对象。