2011-03-31 11 views
18

मेरे पास कोड का एक टुकड़ा है जो कुछ अन्य मानदंडों के आधार पर चुनिंदा क्षेत्र में गतिशील रूप से विकल्प जोड़ता है। यह कुछ हद तक दिखता है:जावास्क्रिप्ट: नए विकल्प के बाद अतिरिक्त विशेषता जोड़ें()

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> 

समझ में आता है?

अब मैं जेएस ढांचे के उपयोग के बिना ऐसा कैसे कर सकता हूं। यह कोड का सिर्फ इतना छोटा हिस्सा है जिसकी मुझे आवश्यकता है, इसलिए इस परियोजना के लिए एक ढांचा खत्म हो जाएगा।

चीयर्स! :-)

उत्तर

37

आप कर सकते हैं कुछ की तरह

 

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

या सिर्फ इस पंक्ति जोड़ें: selbox.options [selbox.options.length] .setAttribute ("छूट", "पूर्णांक"); –

+0

धन्यवाद दोस्तों, यह वास्तव में इतना आसान लगता है। –

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); 
संबंधित मुद्दे