[英]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.