Javascript 动态填充Dojox CheckedMultiselect
我在选项数据中有此数据 对象{1:“QOS”,2:“ATM”,3:“软件”,4:“其他”,5:“IPv6”,6: “管理”,7:LAN,8:LAN,9:QOS,10:LAN,11:WAN,12: “安全”,13:“安全”,14:“局域网”} 为什么这不起作用Javascript 动态填充Dojox CheckedMultiselect,javascript,dojo,Javascript,Dojo,我在选项数据中有此数据 对象{1:“QOS”,2:“ATM”,3:“软件”,4:“其他”,5:“IPv6”,6: “管理”,7:LAN,8:LAN,9:QOS,10:LAN,11:WAN,12: “安全”,13:“安全”,14:“局域网”} 为什么这不起作用 我试图从json动态填充此字段。有人能帮忙吗?您用来访问元素的代码不正确dijit.byId()用于获取小部件对象。但由于您尚未创建小部件(当时),因此无法访问它。 您应该使用以下代码: function populateMultiSel
我试图从json动态填充此字段。有人能帮忙吗?您用来访问
元素的代码不正确dijit.byId()
用于获取小部件对象。但由于您尚未创建小部件(当时),因此无法访问它。
您应该使用以下代码:
function populateMultiSelect(optionData){
require([
"dojox/form/CheckedMultiSelect",
"dojo/dom", "dojo/_base/window", "dojo/domReady!"
], function(CheckedMultiSelect, dom, win){
var sel = dijit.byId('dynamic');
var n = 0;
for(var i in optionData){
var c = win.doc.createElement('option');
c.innerHTML = optionData[i];
c.value = optionData[i];
console.log(optionData[i]);
sel.appendChild(c);
}
var myCheckedMultiSelect = new CheckedMultiSelect({
name: 'dynamic',
multiple: 'true'
}, sel);
});
}
如果这不起作用,请添加ID为dynamic
的元素的HTML代码好吗
更新:您还可以尝试使用以下命令将它们添加到小部件本身:
dojo.byId('dynamic');
这意味着您必须在小部件声明之后放置for循环,如下所示:
myCheckedMultiSelect.addOption(c);
我还制作了一个数组作为概念证明。您应该使用array.forEach,如下所示
function populateMultiSelect(optionData){
require([
"dojox/form/CheckedMultiSelect",
"dojo/dom", "dojo/_base/window", "dojo/domReady!"
], function(CheckedMultiSelect, dom, win){
var sel = dojo.byId('dynamic');
var n = 0;
var myCheckedMultiSelect = new CheckedMultiSelect({
name: 'dynamic',
multiple: 'true'
}, sel);
for(var i in optionData){
var c = win.doc.createElement('option');
c.innerHTML = optionData[i];
c.value = optionData[i];
console.log(optionData[i]);
myCheckedMultiSelect.addOption(c);
}
});
}
}));
}这是我使用的HTML@user1999099我更新了我的答案,现在应该可以了(在JSFIDLE上进行了测试)。
function populateMultiSelect(optionData){
require([
"dojox/form/CheckedMultiSelect",
"dojo/dom", "dojo/_base/window", "dojo/domReady!"
], function(CheckedMultiSelect, dom, win){
var sel = dojo.byId('dynamic');
var n = 0;
var myCheckedMultiSelect = new CheckedMultiSelect({
name: 'dynamic',
multiple: 'true'
}, sel);
myCheckedMultiSelect.startup();
array.forEach(optionData, function(optionData) {
myCheckedMultiSelect._addOptionItem(optionData);
});