2011-03-18 35 views
2

的JavaScript代碼中動態創建下拉框中的新選項:如何使用Dojo

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

我想道場相當於上面的代碼

回答

7

我認爲這將是:

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

剛閱讀關於dojo的dom功能的documentation,這很簡單。

祝你好運!

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")); 
}); 
2

你已經在使用道場(dojo.byId)。

Dojo不替代JavaScript(它增加了它)。當事情在JavaScript中已經很清晰或簡潔時,它不會試圖提供一種替代正常JavaScript的方式。

在你的榜樣,您可以嘗試:

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

這直接造成了<select>元素(我假設是 「XYZ」)裏面的<option>標籤。但是,有些瀏覽器似乎不喜歡直接添加<option>標籤,而不是將其添加到options屬性中。如果是這樣,你可以使用<select>標籤本身的add功能:

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

注意,比調用dojo.create是simpifies創建元素,一切有關增加一個選項,一個<select>另一種是標準的JavaScript。

2

由於innerHTML並不在IE瀏覽器,我沒有如下,它的工作:

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

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

爲我工作在道場1.6

+0

感謝把代碼塊...這是新的 – ivandov 2012-11-26 16:01:16