Javascript - 使用字符串构造对象属性

时间:2014-03-29 14:55:31

标签: javascript jquery object

我有大约100个 PC规范下拉菜单,如下所示:

<select class="drpProcessor spec-gen" name="processor_id">
    <option value=""></option>
    <option value="23">Some Processor</option>               
</select>

我想要实现的是整个规范的一个对象(即所有100个规范下拉列表及其在对象中的值)如下所示:

var specs = {
    processor_id : 21,
    ram_id : 34,
    motherboard_id: 45,
    ...
    ...
};

我知道我可以使用以下内容实现此目的:

var specs = {
    processor_id : $('.drpProcessor').val(),
    ram_id : $('.drpRam').val(),
    motherboard_id: $('.drpMotherBoard').val(),
    ...
    ...
};

但这将是一项繁琐的工作(因为我必须写下这100个下拉菜单)。幸运的是,我将这个名称应用于我想要作为相应规范属性的每个下拉列表。所以我继续写下这个小片段,从每个下拉列表中取出名称,并尝试将此名称创建为specs对象的属性:

var els = $('#deassTab select');

// construct the specs object
var specs = {};
$(els).each(function( index, elem ){
   specs.($(elem).prop('name')) = $(elem).val(); // <-- Problem Lies here
})

但它不允许我这样做并给出这个错误:

  

SyntaxError:意外的令牌(

问题出在specs.($(elem).prop('name')),即我尝试通过specs将此属性添加到string对象的位置。我能以任何方式实现这一点,即使用字符串创建对象的属性吗?

1 个答案:

答案 0 :(得分:4)

错误是一行:

specs.($(elem).prop(name)) = $(elem).val();

其中,当您想使用字符串动态设置属性时,使用方括号语法(并且没有点)来表示该行:

specs[$(elem).prop(name)] = $(elem).val();

哪个可以解决您的问题。

相关问题