我正在使用YUI2框架。
我希望能够获得对页面上创建的对象的引用。我想不想更改现有的JS代码,以便在创建它时为其存储全局句柄。
页面上有这样的内容:
<script type="text/javascript">//<![CDATA[
new FirstRate.Reporter("report1").setOptions(
{
inData: "testfunc"
}));
//]]></script>
我没有在YAHOO.util.Dom中看到任何特定于查找对象的方法。 如何获得FirstRate.Reporter的对象引用?是否有任何内容可以枚举页面上的对象?
由于
答案 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
是您创建并存储的其他对象。