【问题标题】:Create form select from object containing values从包含值的对象中创建表单选择
【发布时间】:2011-02-12 23:21:05
【问题描述】:

我有这样一个对象:

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

我想用取自该对象的 ooptions 创建表单的 select 元素,所以类似这样(我尝试过的代码不起作用,但你可以理解):

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

【问题讨论】:

    标签: javascript forms object select iteration


    【解决方案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: (...)};
    

    【讨论】:

    • @down-voter:想解释一下原因吗?这个答案怎么不正确?
    • 该死的,我在控制台中尝试过这个并且没有工作。现在就像一个魅力。谢谢:)
    • 我也被核弹了,怎么回事?我认为我们都提供了有效的答案:-/
    【解决方案2】:
    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
    

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

    【讨论】:

      猜你喜欢
      • 2022-01-15
      • 1970-01-01
      • 2019-08-10
      • 2012-02-11
      • 2010-12-18
      • 2011-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多