2011-12-07 22 views
7

मैं jquery array.push() फ़ंक्शन का उपयोग करके एक ड्रॉपडाउन से एक सरणी में चर जोड़ने की कोशिश कर रहा हूं लेकिन कुछ अजीब कारणों से यह काम नहीं कर रहा है। बाद jsFiddle लिंक है: http://jsfiddle.net/dKWnb/3/Jquery array.push() काम नहीं कर रहा है

जावास्क्रिप्ट:

$("#test").live("click",function() { 
     var myarray = new Array(); 
     myarray.push($("#drop").val()); 
     alert(myarray); 
}); 

एचटीएमएल

<Select name=drop id=drop> 
    <option value=1>1</option> 
    <option value=2>2</option> 
</select> 
<input type=button name=test id=test value=test> 
+0

यह क्या करना चाहिए? क्योंकि यह यहां बिल्कुल ठीक करता है जो इसे दिखता है। – netiul

+1

बस एक नोट: हमेशा इस तरह से सरणी घोषित करें 'var myarray = []; ' –

+0

@DidierG .: क्यों? – Matt

उत्तर

10

आपका HTML विशेषताओं के लिए उद्धरण शामिल करना चाहिए::

यहाँ कुछ अद्यतन कोड है http://jsfiddle.net/dKWnb/4/

जब एक एचटीएमएल 5 doctype का उपयोग कर आवश्यक नहीं - धन्यवाद @bazmegakapa

आप हर बार सरणी बनाते हैं और इसमें एक मूल्य जोड़ते हैं ... यह काम कर रहा है जैसा सोचा था ?

लाइव() फ़ंक्शन के बाहर सरणी बढ़ते काम करता है ठीक:

var myarray = []; // more efficient than new Array() 
$("#test").live("click",function() { 
     myarray.push($("#drop").val()); 
     alert(myarray); 
}); 

http://jsfiddle.net/dKWnb/5/

भी ध्यान रखें कि jQuery v1.7 के बाद के संस्करणों में -> लाइव() विधि बहिष्कृत है और on() विधि द्वारा प्रतिस्थापित किया गया।

+2

वह एक HTML5 ड्यूट टाइप का उपयोग करता है। विशेषता मानों के आस-पास उद्धरणों का उपयोग करना अनिवार्य नहीं है। – kapa

+2

@bazmegakapa ठीक समझा - मैंने वहां कुछ सीखा है - उत्तर अपडेट – ManseUK

4

आपका कोड मेरे लिए लटकती के वर्तमान मूल्य अलर्ट, दिखा रहा है कि यह ठीक से सरणी में धकेल दिया गया है ।

क्या आप पुराने मूल्यों को रखना चाहते हैं और जोड़ना चाहते हैं? आप प्रत्येक बार सरणी को दोबारा बना रहे हैं, जिसका अर्थ है कि पुराना मान गिर जाता है।

var myarray = []; 
$("#test").click(function() { 
    myarray.push($("#drop").val()); 
    alert(myarray); 
}); 

jsFiddle

संबंधित मुद्दे