Dojo 使用IE获取带有dijit.byId的AccordionContainer时出现问题

Dojo 使用IE获取带有dijit.byId的AccordionContainer时出现问题,dojo,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

我在一个手风琴容器中有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.selectChild("visit_accordion_pane");
dijit.byId
行在IE中失败,并显示以下消息:

Microsoft JScript runtime error: Object doesn't support this property or method
这段代码在Chrome和FF中运行良好

我在Dojo版本1.6.1中得到了这个结果

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


谢谢

您将无法获得具有dijit.byId的节点

dijit.byId返回一个。。。迪吉特!它的用法类似于dijit.byId(idOfMyWidget):) 如果您的小部件是一个_小部件,那么您可以执行dijit.byId().containerNode


如果您想直接获取节点,请改用dojo.byId()。

正如PEM所说,您得到的是一个小部件,而不是一个节点,这正是您想要的。您说这在第一行(调用
dijit.byId
)而不是第二行失败,所以听起来问题与手风琴无关,而是对
dijit.byId
本身的引用。这行代码在哪里?它是否包装在
dojo.ready
/
dojo.addOnLoad
回调中?

您使用的是什么版本的dojo?1。是dijit.byId在IE中失败,还是selectChild调用失败?2.如果是dijit.byId,您确定已经调用了解析器吗?3.如果已经调用了解析器,您确定在dojo.ready之前需要accordeon小部件吗?我已经解决了这个问题。。。在我的问题中将“node”改为“widget”
dijit.byId
位于最终包装在dojo.ready中的函数中。也就是说,dojo.onready调用init函数,该函数设置页面,以便用户能够进行更改。那么,到底有什么例外?
dijit
是否未定义?可能需要查看完整的页面。问题可能存在于发布的代码段之外。
Microsoft JScript runtime error: Object doesn't support this property or method