Создать форму выбора из объекта, содержащего значения - PullRequest
1 голос
/ 13 февраля 2011

У меня есть такой объект:

var options = {1: 'Running', 2: 'Falling', 3: 'Collapsing wall', 
        4: (...)};

Я хотел бы создать элемент select формы с опциями, взятыми из этого объекта, так что-то вроде этого (код, который я пробовал, который не работает, но вы можетеполучить представление):

html = '<form action="" ><select name="block-action"><option>-------</option>';
for(k in obj){
    html += '<option value="'+k+'">'+obj[k]+'</option>'
}
html += '</select></form>'

Ответы [ 2 ]

1 голос
/ 13 февраля 2011

Единственное, что я вижу, это то, что ваша переменная, ссылающаяся на объект, называется options, но вместо этого вы используете имя переменной obj.

У меня работает после этого одного изменения.

Пример: http://jsfiddle.net/X66Su/1/

это:

var options = {1: 'Running', 2: 'Falling', 3: 'Collapsing wall', 
    4: (...)};

должно быть:

var obj = {1: 'Running', 2: 'Falling', 3: 'Collapsing wall', 
    4: (...)};
0 голосов
/ 13 февраля 2011
var html = []; // <-- make an array

//push the first bits of text onto it
html.push('<form action="" ><select name="block-action"><option>-------</option>');

//here's where we dynamically use the object. You were close! You used the wrong variable name, obj vs. options
for(k in options){
    html.push('<option value="'+k+'">',options[k],'</option>');
}

//and wrap up the html tags you opened to start
html.push('</select></form>');

//use html.join(''); to spit out the text

Обычно конкататы строк (где вы добавляете две строки вместе, как в вашем примере) намного медленнее, чем помещать значения в массив и затем соединять их.Я бы предложил эту привычку для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...