我在手风琴容器中有3个内容窗格:
<div dojoType="dijit.layout.ContentPane" region="center" splitter="false" id="innerContentPaneCenter">
<div dojoType="dijit.layout.AccordionContainer" id="accordion_container">
<div dojoType="dijit.layout.ContentPane" title="Search" selected="true" id="search_accordion_pane">
... snip ...
</div>
<div dojoType="dijit.layout.ContentPane" title="Edit Record" id="visit_accordion_pane">
... snip ...
</div>
<div dojoType="dijit.layout.ContentPane" title="Legend" id="legend_accordion_pane">
... snip ...
</div>
</div>
</div>
现在,我正在尝试使用以下方法获取手风琴小部件:
accordion_container = dijit.byId("accordion_container");
这样我就可以通过编程方式打开此窗格:
accordion_container.selectChild("visit_accordion_pane");
dijit.byId
行在IE中失败并显示以下消息:
Microsoft JScript runtime error: Object doesn't support this property or method
此代码在Chrome和FF中运行良好。
我在Dojo Version 1.6.1中得到了这个结果。
我做错了什么?有什么问题?
由于
答案 0 :(得分:1)
您将无法获得dijit.byId ...
的节点dijit.byId返回... dijit!它像dijit.byId(idOfMyWidget)一样使用:) 如果你的小部件是一个_Widget,那么你可以做一个dijit.byId()。containerNode
如果要直接获取节点,请改用dojo.byId()。
答案 1 :(得分:1)
正如PEM所说,你得到的是一个小部件,而不是一个节点,这就是你想要的。你说这是第一行失败(调用dijit.byId
)而不是第二行,所以听起来这个问题与手风琴无关,而是对dijit.byId
本身的引用。这行代码在哪里?它是否包含在dojo.ready
/ dojo.addOnLoad
回调中?