2015-03-11 3 views
0

У меня возникли проблемы, населяющие мое меню выбора с параметрами из массива, используя этот подходзанесения выберите меню с параметрами из массива

var adultAgesArr = ['18 - 20', '21 - 30', '31 - 40', '41 - 50', '51 - 60', '60 +']; 
var $ageOptions = ''; 
$.each(adultAgesArr, function(index, value){ 
    $ageOptions += $('<option/>', {text: value}); 
}) 

и после

$('<select/>').append($ageOptions) 

, что я получаю как результат

<select> 
[Object object] [Object object] [Object object] [Object object] [Object object] [Object object] 
</select> 
+0

Я считаю, что, делая это: $ ageOptions + = $ ('

ответ

1

Вы можете сделать это:

$select = $('select'); 
$.each(adultAgesArr, function(index, value){ 
    $select.append($('<option/>', {text: value, value: value})); 
}) 

Перед тем, как оказалось, что вы принудительно привязываете объекты jQuery к строке. Я так думаю, если вы кэшируете select заранее, так же эффективно.

DEMO

+0

Но он не дает никаких значений для параметров. Только установка текста на экране. Как это сделать. Я использовал .outerHTML для получения HTML из объект. http://jsfiddle.net/80jh2ktw/ – planet260

+0

@ planet260, помогает ли моя помощь? – Andy

+0

Да, я только установил текст для отображения. – planet260

0

Для создания опции вместо этого делать:

$ageOptions += $("< option/>", {text: value}); 

Лучше сделать это:

new Option("option text", "value") 

затем добавить.

1

Надеется, что это помогает:

<select id="menu"></select> 

var populate = function() { 
    var adultAgesArr = ['18 - 20', '21 - 30', '31 - 40', '41 - 50', '51 - 60', '60 +'], 
    select = $('#menu')[0]; 

    $.each(adultAgesArr, function(index, value){ 
     var opt = document.createElement('option'); 
     opt.value = value; 
     opt.innerHTML = value; 
     select.appendChild(opt); 
    }); 
} 

populate(); 
Смежные вопросы