使用IE获取带有dijit.byId的AccordionContainer的问题

时间:2012-01-03 13:16:33

标签: dojo

我在手风琴容器中有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中得到了这个结果。

我做错了什么?有什么问题?

由于

2 个答案:

答案 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回调中?