我有这样一个对象:
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>'
答案 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(将两个字符串添加到一起,就像在您的示例中一样)比将值推送到数组然后加入它们要慢得多。我建议你这个习惯。