2011-12-07 68 views
7

Tôi đã cố thêm các biến từ một danh sách thả xuống vào một mảng bằng cách sử dụng hàm Jquery array.push() nhưng vì một số lý do lẻ nó không hoạt động. Sau đây là link jsFiddle: http://jsfiddle.net/dKWnb/3/Jquery array.push() không hoạt động

JavaScript:

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

HTML

<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

Nó nên làm gì? Bởi vì nó ở đây chính xác những gì nó trông nó nên làm. – netiul

+1

Chỉ cần lưu ý: luôn khai báo các mảng theo cách này 'var myarray = [];' –

+0

@DidierG .: Tại sao? – Matt

Trả lời

10

HTML của bạn nên bao gồm dấu ngoặc kép cho các thuộc tính: http://jsfiddle.net/dKWnb/4/

Không bắt buộc khi sử dụng một DOCTYPE HTML5 - nhờ @bazmegakapa

Bạn tạo mảng mỗi lần và thêm một giá trị cho nó ... nó hoạt động như mong đợi ?

Di chuyển các mảng bên ngoài của hàm live() hoạt động tốt:

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

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

Cũng lưu ý rằng trong các phiên bản sau này của jQuery v1.7 -> phương pháp trực tiếp() bị phản đối và được thay thế bằng phương pháp on().

+2

Anh ấy sử dụng loại tài liệu HTML5. Nó không bắt buộc phải sử dụng dấu ngoặc kép xung quanh các giá trị thuộc tính. – kapa

+2

@bazmegakapa ok hiểu - tôi đã học được điều gì đó - câu trả lời được cập nhật – ManseUK

4

Mã của bạn cảnh báo giá trị hiện tại của thả xuống cho tôi, cho thấy rằng nó đã đúng đẩy vào mảng .

Bạn có muốn giữ các giá trị cũ và nối thêm không? Bạn đang tạo lại mảng mỗi lần, có nghĩa là giá trị cũ bị ghi đè.

Dưới đây là một số mã Cập nhật:

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

jsFiddle

Các vấn đề liên quan