2013-01-23 32 views
11

Tôi có một phần tử chọn trên trang HTML của mình. Tôi muốn phổ biến nó bằng một mảng. vì chúng ta có thể cung cấp mảng như dataprovider cho comboBox trong tập lệnh hành động. Tôi làm như saulàm cách nào tôi có thể cung cấp một mảng làm tùy chọn để chọn phần tử?

trong HTML ...

<table> 
    <tr> 
    <td> 
     <label>Recording Mode:</label> 
    </td> 
    <td> 
     <select id="rec_mode">   
     </select> 
    </td> 
    </tr> 
</table> 

trong javascript ...

var videoSrcArr = new Array("option1", "option2", "option3", "option4", "option5"); 

làm thế nào tôi có thể cư yếu tố rec_mode khi trang được tải với VideoSrcArr? Cảm ơn

+0

thể trùng lặp của [danh sách thả xuống thả xuống JavaScript với mảng] (http://stackoverflow.com/questions/9895082/javascript-populate-drop-down-list-with -array) (và các câu hỏi khác). – nnnnnn

Trả lời

13

tôi khuyên bạn sử dụng một định dạng như sau:

var options = 
[ 
    { 
    "text" : "Option 1", 
    "value" : "Value 1" 
    }, 
    { 
    "text"  : "Option 2", 
    "value" : "Value 2", 
    "selected" : true 
    }, 
    { 
    "text" : "Option 3", 
    "value" : "Value 3" 
    } 
]; 

var selectBox = document.getElementById('rec_mode'); 

for(var i = 0, l = options.length; i < l; i++){ 
    var option = options[i]; 
    selectBox.options.add(new Option(option.text, option.value, option.selected)); 
} 

Bạn không chạy vào vấn đề vì phải chọn một tùy chọn mặc định và bạn có thể dễ dàng tạo ra các mảng tùy chọn tự động .

- CẬP NHẬT -

ES6 phiên bản mã trên:

let optionList = document.getElementById('rec_mode').options; 
let options = [ 
    { 
    text: 'Option 1', 
    value: 'Value 1' 
    }, 
    { 
    text: 'Option 2', 
    value: 'Value 2', 
    selected: true 
    }, 
    { 
    text: 'Option 3', 
    value: 'Value 3' 
    } 
]; 

options.forEach(option => 
    optionList.add(
    new Option(option.text, option.value, option.selected) 
) 
); 
+0

Làm cách nào để có được giá trị chọn? –

+0

là bản cập nhật ES6, có thể xóa 'var'. Thay thế bằng' let'? – VisWebsoft

+0

Cuộc gọi tốt @VisWebsoft – THEtheChad

4

Tôi khuyên bạn nên sử dụng đối tượng thay vì mảng nó sẽ hữu ích và được tôn trọng theo tiêu chuẩn. Lý do là WE có thể lập chỉ mục vào đối tượng bằng "khóa" và nhận được "giá trị". Để hiển thị nội dung và đặt chúng, bạn có thể làm theo này NOTES

CHECK HERE

<!DOCTYPE html> 
<html> 
<body> 
<table> 
    <tr> 
    <td> 
     <label>Recording Mode:</label> 
    </td> 
    <td> 
     <select id="rec_mode">   
     </select> 
    </td> 
    </tr> 
</table> 
</body> 
<script> 
var myobject = { 
    ValueA : 'Text A', 
    ValueB : 'Text B', 
    ValueC : 'Text C' 
}; 
var select = document.getElementById("rec_mode"); 
for(index in myobject) { 
    select.options[select.options.length] = new Option(myobject[index], index); 
} 

</script> 
</html> 
1

Bạn có thể làm điều này:

var videoSrcArr = new Array("option1","option2","option3","option4","option5"), 
    selectEl = document.getElementById('rec_mode'); 


for(var i = 0; i < videoSrcArr.length; i++){ 
    selectEl.options.add(new Option(videoSrcArr[i], videoSrcArr[i])); 
}        
+0

—tốt hơn để sử dụng mảng chữ hơn hàm tạo mảng vì nó ít có khả năng nhập và ít có khả năng làm những điều không mong muốn (ví dụ: 'mảng mới (9) 'so với' [9] '. – RobG

3

Đây là cách đơn giản nhất để cư ComboBox với một mảng.

var j = new Array("option1","option2","option3","option4","option5"),  
var options = ''; 

for (var i = 0; i < j.length; i++) { 
    options += '<option value="' + j[i]+ '">' + j[i] + '</option>'; 
} 
$("#rec_mode").html(options); 
0

Đây là cách tốt nhất mà bạn có thể nhận được giá trị mảng trong combo box

var states = new Array(); 
 
states['India'] = new Array('Andhra Pradesh','Arunachal Pradesh','Assam','Bihar','Chhattisgarh','Goa','Gujarat','Haryana','Himachal Pradesh','Jammu and Kashmir','Jharkhand','Karnataka','Kerala','Madhya Pradesh','Maharashtra','Manipur','Meghalaya','Mizoram','Nagaland','Odisha','Punjab','Rajasthan','Sikkim','Tamil Nadu','Telangana','Tripura','Uttar Pradesh','Uttarakhand','WestBengal','Andaman and Nicobar Islands','Chandigarh','Dadra and Nagar Haveli','Daman and Diu','Lakshadweep','Puducherry'); 
 

 
function setStates() { 
 
\t var newOptions=states['India']; 
 
\t var newValues=states['India']; 
 
\t selectField = document.getElementById("state"); 
 
\t selectField.options.length = 0; 
 
\t for (i=0; i<newOptions.length; i++) 
 
\t { 
 
\t selectField.options[selectField.length] = new Option(newOptions[i], newValues[i]); 
 
\t } 
 
}
<body onload="setStates();" 
 
<label>State :</label> 
 
<select style="width:auto;" name="state" id="state"> 
 
<option value="">Please select a Country</option> 
 
</select><br>

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