2011-02-12 25 views
1

我有这样的对象:创建形式从包含对象选择值

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

我想创建窗体的选择元素与此对象采取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
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(你在你的例子添加两个串在一起,像)比推估价要慢得多es放到一个数组上,然后加入它们。我会为你建议这种习惯。

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: (...)}; 
+0

@ down-voter:小心解释为什么?这个答案如何不正确? – user113716 2011-02-12 23:34:15

+0

该死的,我试图在控制台中,并没有工作。现在就像一个魅力。谢谢:) – marks34 2011-02-12 23:35:19