通过在 DOJO 中迭代 JSONArray 创建动态复选框
Create Dynamic checkboxes by iterating JSONArray in DOJO
我是 DOJO 的新手,我正在使用 DOJO 1.5.0 版本。
我想通过在 DOJO 中迭代 JSONArray 来创建动态复选框。这种动态创建将在特定事件上完成,例如当我们选择某个组合框值时。
例如考虑下面的JSON数组:
var tempJSONArray = [{role_id = '1', role_name = 'role1'},{role_id =
'2', role_name = 'role2'},{role_id = '3', role_name = 'role3'}]
我想显示与角色名称对应的复选框。复选框的标签将为 role_name,值将为 JSON 对象的 role_id。
我还想将 'onChange' 事件添加到复选框,因为在这个事件中我想用 role_ids 对服务器进行 Ajax 调用。
感谢您的阅读,如果需要进一步说明,请告诉我。
您可以使用 dojo.create()
方法创建 DOM 个节点,并使用 dojo.place()
方法将它们放置在另一个元素中,例如:
var checkbox = dojo.create("input", {
type: "checkbox",
value: "1"
});
您可能需要将其包裹在 <label>
中以显示文本(您也可以使用 dojo.create()
创建文本)。然后你可以将它们放在一个列表中,例如:
dojo.place(label, "checkboxes");
这会将复选框(或标签)包装在 ID 为 checkboxes
的元素内。因此,如果您现在在循环中创建复选框,它应该可以工作。
在网上冲浪和玩弄代码后,我可以编写以下代码,它适用于我的场景。所以认为它会对其他人有所帮助。
for ( var i = 0; i < roleJSON.length; i++) {
var role = roleJSON[i];
var tr = dojo.create("tr",{id:"rolebasecheckbox"+i,'class':'rolebasecheckbox'});
alert("tr=" + tr);
var td= dojo.create("td",{innerHTML:'<input id="roleBaseCb_'+i+'" value="'+role.role_id+'" dojoType="dijit.form.CheckBox" onclick="alert('onclick event')" type="checkbox" /> <label for="roleBaseCb_'+i+'">'+role.role_name+'</label>',align:'center'},tr);
alert("td=" + td);
if(i==0){
alert("i is 0");
dojo.place(tr, "roleBaseComboTR", "after");
}else{
dojo.place(tr, "rolebasecheckbox"+(i-1), "after");
}
}
我是 DOJO 的新手,我正在使用 DOJO 1.5.0 版本。
我想通过在 DOJO 中迭代 JSONArray 来创建动态复选框。这种动态创建将在特定事件上完成,例如当我们选择某个组合框值时。
例如考虑下面的JSON数组:
var tempJSONArray = [{role_id = '1', role_name = 'role1'},{role_id = '2', role_name = 'role2'},{role_id = '3', role_name = 'role3'}]
我想显示与角色名称对应的复选框。复选框的标签将为 role_name,值将为 JSON 对象的 role_id。 我还想将 'onChange' 事件添加到复选框,因为在这个事件中我想用 role_ids 对服务器进行 Ajax 调用。
感谢您的阅读,如果需要进一步说明,请告诉我。
您可以使用 dojo.create()
方法创建 DOM 个节点,并使用 dojo.place()
方法将它们放置在另一个元素中,例如:
var checkbox = dojo.create("input", {
type: "checkbox",
value: "1"
});
您可能需要将其包裹在 <label>
中以显示文本(您也可以使用 dojo.create()
创建文本)。然后你可以将它们放在一个列表中,例如:
dojo.place(label, "checkboxes");
这会将复选框(或标签)包装在 ID 为 checkboxes
的元素内。因此,如果您现在在循环中创建复选框,它应该可以工作。
在网上冲浪和玩弄代码后,我可以编写以下代码,它适用于我的场景。所以认为它会对其他人有所帮助。
for ( var i = 0; i < roleJSON.length; i++) {
var role = roleJSON[i];
var tr = dojo.create("tr",{id:"rolebasecheckbox"+i,'class':'rolebasecheckbox'});
alert("tr=" + tr);
var td= dojo.create("td",{innerHTML:'<input id="roleBaseCb_'+i+'" value="'+role.role_id+'" dojoType="dijit.form.CheckBox" onclick="alert('onclick event')" type="checkbox" /> <label for="roleBaseCb_'+i+'">'+role.role_name+'</label>',align:'center'},tr);
alert("td=" + td);
if(i==0){
alert("i is 0");
dojo.place(tr, "roleBaseComboTR", "after");
}else{
dojo.place(tr, "rolebasecheckbox"+(i-1), "after");
}
}