Dojo附加点/byId返回未定义

Dojo附加点/byId返回未定义,dojo,undefined,getelementbyid,Dojo,Undefined,Getelementbyid,我制作了一个模板,有一个带有id和dojoAttachPoint的标记,标记为“selectPageNumber”。我想在创建时用选项填充它,因此我向postCreate函数添加了一些代码: var select = dijit.byId("selectPageNumber"); 或 但我总是有select未定义。 我做错了什么 UPD: 元素的问题已经自发地解决了,我没有得到解决方案。我既没有使用dojo.addOnLoad也没有使用widgetsInTemplate:true,它刚刚开始工

我制作了一个模板,有一个带有id和dojoAttachPoint的
标记,标记为“selectPageNumber”。我想在创建时用选项填充它,因此我向postCreate函数添加了一些代码:

var select = dijit.byId("selectPageNumber");

但我总是有
select
未定义。
我做错了什么

UPD: 元素的问题已经自发地解决了,我没有得到解决方案。我既没有使用
dojo.addOnLoad
也没有使用
widgetsInTemplate:true
,它刚刚开始工作。但我又发现了同样的问题:当我添加另一个标签时,我无法获得它
HTML:

第一个警报显示
this.selectPageNumber
是有效对象,而
this.selectPageNumber2
为空。
widgetsInTemplate
设置为false。
所有代码都在dojo.addOnLoad()中
dojo.require()
有效
我正在使用IBMRationalApplicationDeveloper(如果必要的话)


为什么如此不同?

根据何时调用dijit.byId(),小部件可能尚未创建。尝试使用dojo.addOnLoad()


根据调用dijit.byId()的时间,小部件可能尚未创建。尝试使用dojo.addOnLoad()


根据您的语法,我假设您使用的是1.6。你的问题提到了模板和后创建,所以我假设你已经创建了一个小部件,作为一个组合(模板中的小部件)

假设1.6,在您的小部件中,您已将
widgetsInTemplate
属性设置为true。这将告诉解析器,在创建小部件时,模板中有需要解析的小部件

我将从select中删除id。拥有该id意味着您每页只能实例化一次小部件。您应该在小部件中使用
this.selectPageNumber
,以访问select小部件

如果您使用的是1.7或更高版本,则不应设置widgets
widgetsInTemplate
属性,而应使用dijit.\u WidgetsInTemplateMixinmixin


根据您的语法,我假设您使用的是1.6。你的问题提到了模板和后创建,所以我假设你已经创建了一个小部件,作为一个组合(模板中的小部件)

假设1.6,在您的小部件中,您已将
widgetsInTemplate
属性设置为true。这将告诉解析器,在创建小部件时,模板中有需要解析的小部件

我将从select中删除id。拥有该id意味着您每页只能实例化一次小部件。您应该在小部件中使用
this.selectPageNumber
,以访问select小部件

如果您使用的是1.7或更高版本,则不应设置widgets
widgetsInTemplate
属性,而应使用dijit.\u WidgetsInTemplateMixinmixin


我接近解决方案:似乎有一种RAD“缓存”不响应html代码中的更改。

可能是一个解决方案。

我接近了这个解决方案:似乎有一种RAD“缓存”不响应html代码中所做的更改。

可能是一个解决方案。

没有dojo.addOnLoad,问题就解决了,但情况变得太奇怪了!请检查问题的更新。在没有dojo.addOnLoad的情况下,问题已经解决,但情况变得太奇怪了!请检查问题的更新。Id是确定的,我每页只实例化一次。而widgetsInTemplate:true没有帮助,因为它在设置为false时开始工作。但我对这个问题很感兴趣。Id是可以的,我每页只实例化一次。而widgetsInTemplate:true没有帮助,因为它在设置为false时开始工作。但我有一个非常有趣的问题。我建议把一个独立的例子放在一起,这个例子正好再现了这个问题。你可以把它放在jsfiddle.net或其他什么东西上关于后期创建和启动?我建议将一个独立的示例放在一起,以准确地再现这一点。你可以把它放在jsfiddle.net或其他什么东西上在后创建和启动时?
var select = this.selectPageNumber;
<select class="ctrl2" dojotype="dijit.form.ComboBox" dojoAttachPoint="selectPageNumber" id="selectPageNumber">
</select>
<select class="ctrl2" dojotype="dijit.form.ComboBox" dojoAttachPoint="selectPageNumber2" id="selectPageNumber2">
</select>
alert(this.selectPageNumber);
alert(this.selectPageNumber2);
 dojo.addOnLoad(function() {
     var select = dijit.byId("selectPageNumber");
 });