如何使用dojo动态创建下拉框的新选项

时间:2011-03-18 10:14:07

标签: javascript dojo

JavaScript代码:

var ref =dojo.byId("xyz");
var optn = document.createElement("OPTION");
optn.text="txt"
optn.value="val"
ref.options.add(optn);

我想要dojo相当于上面的代码

5 个答案:

答案 0 :(得分:7)

我认为那会是:

var ref = dojobyId("xyz");
dojo.create("option", { value: "some", innerHTML: "label of option"}, ref);

刚刚阅读了关于dojo dom函数的documentation,这很简单。

祝你好运!

答案 1 :(得分:2)

您已经在使用Dojo(dojo.byId)。

Dojo不会取代JavaScript(它会增加它)。当JavaScript中的内容已经清晰或简洁时,它并不试图提供替代正常JavaScript方法的替代方法。

在您的示例中,您可以尝试:

dojo.create("option", { text:"txt", value:"val" }, dojo.byId("xyz"));

这会直接在<option>元素中创建<select>标记(我假设它是“xyz”)。但是,某些浏览器似乎不喜欢直接添加<option>标记,而不是将其添加到options属性。如果是这样,您可以使用add标记本身的<select>功能:

dojo.byId("xyz").add(dojo.create("option", { text:"txt", value:"val" }));

请注意,除了调用创建元素的dojo.create之外,与向<select>添加选项相关的所有内容都是标准JavaScript。

答案 2 :(得分:2)

由于innerHTML在IE中不起作用,我做了如下操作:     

    option = document.createElement('option');
    option.text = 'xyz';
    option.value = 'val';
    dojo.byId('commodities').add(option);

答案 3 :(得分:2)

dijit.byId('mySelect').addOption({ label: 'text' , value: 'val' });

在Dojo 1.6中为我工作

答案 4 :(得分:0)

两个选项:

选项1:

dojo.require("dijit.form.Select");
var ref = dojo.byId("xyz");
dojo.create("option", { 
    value: "val", 
    innerHTML: 
    "label of option"
    }, ref);

选项2:

dojo.require("dijit.form.Select");

dojo.ready(function() {
    new dijit.form.Select({
        name: 'myName',
        options: [{{
            label: 'xyz',
            value: 'val',
            selected: true
         }]
    }).placeAt(dojo.byId("xyz"));
 });