2

我在 myJSP.jsp 上有一组 dijit.form.CheckBoxe。
在我的 dojo 类 myClass.js 中,我尝试抓住这些复选框并将它们连接到每个应在“onClick”事件上调用的函数:

(dijit.registry.byClass("dijit.form.CheckBox")).forEach(function(checkBox){
    dojo.connect(checkBox,"onClick",this,this.checkboxClicked);
});

当我单击任何复选框时,我会收到以下消息:"lls[i].apply is not a function"

为什么我不能使用 dojo.connect?
顺便说一句 - 我使用 IBM Websphere Portal 6.1.5 的 dojo 版本,即 1.3.2。

4

1 回答 1

0

原因是thisforEach回调函数中实际上是指全局对象并且this.checkboxClicked实际上是undefined.

为了解决这个问题,使用forEach函数中的第二个参数来指定范围对象,即this对象。

下面的代码可能起作用取决于this调用此函数时的对象是否与具有该checkboxClicked函数的对象相同。如果不是,您可以更改为使用其他对象。

(dijit.registry.byClass("dijit.form.CheckBox")).forEach(function(checkBox){
dojo.connect(checkBox,"onClick",this,this.checkboxClicked);
}, this);
于 2011-07-20T08:23:23.390 回答