2011-03-31 109 views
18

我有一段代碼根據其他條件動態地將選項添加到選擇字段。它看起來有點像這樣:JavaScript:在新選項後添加額外屬性()

if (chosen == "a_value") { 
    selbox.options[selbox.options.length] = new Option('text_1','value_1'); 
    selbox.options[selbox.options.length] = new Option('text_2','value_2'); 
    selbox.options[selbox.options.length] = new Option('text_3','value_3'); 
} 

我需要的是添加一個額外的屬性到包含特定值的新選項。在這種情況下,該屬性將被稱爲「折扣」,並且該值將是一個整數。稍後,我將讀取屬性值並根據「選項」字段中的值處理它們。

因此,一旦腳本準備就緒,選項將如下所示:

<option value="value_1" discount="integer">text_1</option> 

有意義嗎?

現在我怎麼能做到這一點,而不使用JS框架。這只是我需要的代碼的一小部分,所以一個框架對於這個項目來說是過分的。

乾杯! :-)

回答

37

,你可以這樣做

 

var o1 = new Option("key","value"); 
selbox.options[selbox.options.length] = o1; 
o1.setAttribute("key","value"); 
 
+5

或只需添加這一行: selbox.options [selbox.options.length] .setAttribute( 「折扣」, 「整數」); – 2011-03-31 11:29:27

+0

謝謝你們,它的確很容易。 – 2011-03-31 11:33:23

2

可以合併成一行代碼如下:

(selbox.options[selbox.options.length] = new Option("key","value")).setAttribute("key","value"); 

請注意,如果你只有一個屬性添加這隻會工作,否則你將需要一個臨時變量。

2

我知道這是舊的,但我遇到了這個問題,當我忘了它是add而不是push今天。

正確的方法是使用select.options.add

var opt = document.createElement('option'); 
opt.value = 'hello'; 
opt.text = 'world'; 
opt.setAttribute('data-discount', 'integer'); 
selbox.options.add(opt);