2011-03-31 11 views
18

'dan sonra ekstra öznitelik ekle Diğer bazı ölçütlere bağlı olarak bir seçim alanına dinamik olarak seçenekler ekleyen bir kod parçam var. Şöyle biraz görünür:JavaScript: new Option()

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'); 
} 

İhtiyacım olan belirli bir değer içerdiğini yeni seçeneğe ekstra özellik eklemektir. Bu durumda, öznitelik "indirim" olarak adlandırılır ve değer bir tamsayı olacaktır. Daha sonra, öznitelik değerlerini okuyacağım ve bunları Option alanındaki değere göre işleyeceğim.

Bu nedenle, komut hazır olduğunda bir seçenek şöyle görünecektir;

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

Anlam verir?

Şimdi JS çerçevelerini kullanmadan bunu nasıl yapabilirim. Bu sadece ihtiyacım olan kodun küçük bir parçası, bu nedenle bu proje için bir çerçeve çok fazla olacaktır.

Şerefe! :-)

cevap

37

Yapabileceğiniz bir şey gibi

 

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

veya bu satırı ekleyin: selbox.options [selbox.options.length] .setAttribute ("indirim", "tam sayı"); –

+0

Teşekkürler, bu kadar kolay görünüyor. –

2

Sen bir satır kod içine bu birleştirebilirsiniz: Eklemek sadece bir niteliği varsa bu sadece çalışacağını

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

Not aksi takdirde geçici bir değişkene ihtiyacınız olacak.

2

Bu eski olduğunu biliyorum ama bu soruya bugün add'u ve push'u değil unuttuğumda rastladım.

Doğru yol select.options.add kullanmaktır.

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