Checkbox 使用Dojo以编程方式设置选中的复选框
下面的代码返回未捕获的TypeError:无法将属性“checked”设置为null。 将复选框设置为选中状态的正确方法是什么Checkbox 使用Dojo以编程方式设置选中的复选框,checkbox,dojo,Checkbox,Dojo,下面的代码返回未捕获的TypeError:无法将属性“checked”设置为null。 将复选框设置为选中状态的正确方法是什么 array.forEach(this._getAllCheckBoxIDs(), function(item){ dom.byId(item).checked = true; }, this); 好的,如果您有dojo复选框的集合,那么我建议您使用registry.byId而不是dojo.byId,因为您需要复选
array.forEach(this._getAllCheckBoxIDs(), function(item){
dom.byId(item).checked = true;
}, this);
好的,如果您有dojo复选框的集合,那么我建议您使用
registry.byId
而不是dojo.byId
,因为您需要复选框dojo小部件及其domNode来更新其属性
dojo类名:-
dijit/registry
Ex:-
// require registry class first
array.forEach(this._getAllCheckBoxIDs(), function(item){
registry.byId(item).set("checked", true);
}, this);
欲知详情
希望这能对您有所帮助:)以下示例显示了一个编程示例,说明如何为小部件
复选框设置属性checked
脚本使用与查询DOM相反的dijit/registry
获取复选框的引用
而不是像这样直接为小部件设置属性:
dom.byId(item).checked = true;
我建议使用如下setter:
widgetReference.set('checked', true);
这将允许小部件生命周期正常工作
现场示例如下:
选项0
选择1
这是正确的,但是dom.byId(item)
返回null
,所以我打赌这是正确的。\u getAllCheckBoxId()
不会返回您期望的结果。。。有了JSFIDLE,我们可以提供更好的帮助。请分享_getAllCheckBoxIDs()函数的内容!感谢您的回复。结果表明,在调用_GetAllCheckBoxId()时没有创建复选框。请确保“this._GetAllCheckBoxId()”仅包含dojo复选框的id。。如果上述解决方案不起作用,请随意提问……为了使用dijit小部件的适当生命周期,我建议使用widget.set('checked',true);是的。。胡言乱语。。(y)
require(["dijit/form/CheckBox", "dijit/registry", "dijit/form/Button", "dojo/domReady!"], function(CheckBox, registry, Button) {
new CheckBox({
id: "checkBox0",
name: "checkBox0",
value: "option0",
checked: false,
onChange: function(event) {
}
}, "checkBox0").startup();
new CheckBox({
id: "checkBox1",
name: "checkBox1",
value: "option1",
checked: false,
onChange: function(event) {
}
}, "checkBox1").startup();
var markCheckAll = function() {
registry.toArray().forEach(function(widget) {
if (widget.type === 'checkbox'){
widget.set('checked', true);
}
});
};
markCheckAll();
});
<input id="checkBox0" />
<label for="checkBox">Option 0</label>
<br>
<input id="checkBox1" />
<label for="checkBox">Option 1</label>
<br>