2011-12-07 17 views
7

Jquery array.push() işlevini kullanarak bir açılır listeden değişkenler eklemeye çalışıyorum, ancak bazı garip nedenlerden dolayı çalışmıyor. jsFiddle bağlantı aşağıdadır: http://jsfiddle.net/dKWnb/3/Jquery array.push() çalışmıyor

JavaScript: Kodunuz düzgün diziye itti gösteren, benim için açılan mevcut değerini uyarır

<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

Ne yapmalı? Çünkü burada tam olarak göründüğü gibi yapması gerekiyor. – netiul

+1

Sadece bir not: her zaman dizileri bu şekilde bildir 'var myarray = []; ' –

+0

@DidierG .: Neden? – Matt

cevap

10

HTML'iniz özellikleri için tırnak içermelidir: Burada

bazı güncellenmiş kod HTML5 Doctype'ı kullanırken Gerekli değil http://jsfiddle.net/dKWnb/4/

- teşekkürler

@bazmegakapa

Diziyi her seferinde yaratır ve ona bir değer eklersiniz. beklenildiği gibi ?

ince canlı() fonksiyonunun dışına dizisini işleri Hareketli:

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

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

Ayrıca jQuery v1.7 sonraki sürümlerinde dikkat -> Canlı() yöntemi kaldırılmıştır ve on() yöntemiyle değiştirilir.

+2

Bir HTML5 dokümanı kullanır. Öznitelik değerleri etrafındaki tekliflerin kullanılması zorunlu değildir. – kapa

+2

@bazmegakapa tamam anlaşıldı - orada bir şey öğrendim - cevap güncellendi – ManseUK

4

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

HTML .

Eski değerleri korumak ve eklemek ister misiniz? Diziyi her seferinde yeniden yaratıyorsunuz, bu eski değerin clobberlenmesini sağlıyor.

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

jsFiddle