从包含值的对象创建表单选择

时间:2011-02-12 23:21:05

标签: javascript forms object select iteration

我有这样一个对象:

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

我想创建表单的select元素,其中包含从该对象中获取的ooptions,所以类似的东西(我试过的代码不起作用,但你可以得到这个想法):

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

2 个答案:

答案 0 :(得分:1)

我唯一能看到的是引用该对象的变量名为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: (...)};

答案 1 :(得分:0)

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

通常,字符串concats(将两个字符串添加到一起,就像在您的示例中一样)比将值推送到数组然后加入它们要慢得多。我建议你这个习惯。