2010-01-26 56 views
9

Muốn thêm tùy chọn động vào phần tử Chọn bằng nguyên mẫu.Thêm tùy chọn vào phần tử Chọn bằng javascript sử dụng thư viện Prototype

Dường như có rất nhiều cách khác nhau để thực hiện điều đó, tất cả phải làm với các tùy chọn.thêm v.v. ... Không được thấy nhiều trong cách thức trình duyệt chéo.

Muốn trọng lượng nhẹ nhất có thể.

Đây là những gì tôi đã có cho đến nay. Nó chỉ là phụ thêm các tùy chọn mà tôi đang mắc kẹt trên:

var oNewOption = new Element('option').value=vItem; 
oNewOption.text=vItem; 

Bất kỳ ý tưởng nào?

Cảm ơn trước!

Trả lời

11
select.insert(new Element('option', {value: myValue}).update(myLabel)); 

chèn gắn thêm với nội dung của chọn đối tượng, cập nhật cập nhật nội dung của đối tượng tùy chọn mới.

Không thực sự tốt hơn so với cách cổ điển.

+0

Điều này làm việc theo những gì tôi muốn làm, mặc dù vì một số lý do .insert() không trả về phần tử được cập nhật để: chèn (tùy chọn) .update (myLabel) không hoạt động. Vì vậy, thay đổi nó thành: option.update (myLabel);chèn (tùy chọn); Điều trị của công việc. – jamesmhaley

+0

Nếu bạn nhìn kỹ, _update_ nằm trên đối tượng được trả về bởi _new_, không phải là đối tượng được trả về bởi _insert_. – Alsciende

+0

Phương pháp này hoạt động trong IE7! –

25

Không cần Prototype, nó sẽ giống như dễ dàng với các phương pháp lâu đời sau mà làm việc ở mọi trình duyệt máy tính để bàn lớn kể từ giữa những năm 1990:

// Assuming a select element stored in a variable called 'select' 
select.options[select.options.length] = new Option("Option text", "optionValue"); 
+0

Cảm ơn bạn nhưng đã tìm cách sử dụng mẫu thử nghiệm khi phần còn lại của mã đang sử dụng mẫu thử nghiệm! Sẽ ghi nhớ điều này trong tương lai khi sử dụng mẫu thử nghiệm không phải là một yêu cầu! – jamesmhaley

+8

Prototype chỉ là một thư viện. Không cần phải sử dụng nó cho tất cả mọi thứ, và không có gì ngăn cản bạn trộn các phương thức DOM thông thường với mã Prototype của bạn. –

+4

+1. 'select.options.add (tùy chọn mới ('foo', 'bar'))' cũng được hỗ trợ khá tốt. –

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