簡體   English   中英

Javascript-使用字符串構造對象屬性

[英]Javascript - Using strings to construct an object properties

我有大約100個PC規范下拉列表,如下所示:

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

我要實現的是整個規范的對象(即對象中包含其值的所有100個spec下拉列表),如下所示:

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
})

但是它不允許我這樣做並給出以下錯誤:

語法錯誤:意外令牌(

問題在於specs.($(elem).prop('name'))即我試圖通過string將此屬性添加到specs對象的地方。 有什么辦法可以實現這一點,即使用字符串創建對象的屬性?

錯誤是這一行:

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

在哪里,當您想使用字符串來動態設置屬性時,可以使用方括號語法(不帶點)使該行:

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

哪個應該解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM