2012-01-13 48 views
1

我試圖用一些有效的Javascript來聰明點,但它讓我頭痛,無法搜索。Javascript - 使用類名指定要賦予哪個變量的值

我有一組輸入在表中,每一個給定的類:

... 
<tr> 
<td><input name="name" type="text" class="markertitle"/></td> 
<td><input name="desc" type="text" class="markerdescription"/></td> 
<td><input name="address" type="text" class="markeraddress"/></td> 
<td><input name="url" type="text" class="markerurl"/></td> 
</tr> 
... 

我想利用這些類的值,使用它來指定給定的變量(其已經存在),然後將該輸入的值(使用+ =)分配給該變量。

這是我想出,但沒有喜悅:

var markertitle = {}; 
    var markerdescription = {}; 
    var markeraddress = {}; 
    var markerurl = {}; 
    $('#markermatrixadd input').each(function(){ 
     var field = $(this).attr('class'); 
     window[field] += $(this).val() + ','; 

    }); 

它死了簡單的我敢肯定,但我認爲我的大腦有點炸:(

+0

當心有多個類或類元素不匹配的變量。 – Stefan 2012-01-13 11:53:42

回答

4

你不要瓦爾「T似乎是全球性的他們必須任何函數之外聲明除此之外,你不能爲一個對象({})添加任何東西使用字符串或數組:。

var markertitle = "" 
var markerdescription = "" 
etc 

function() .... 

    $('#markermatrixadd input').each(function(){ 
     var field = $(this).attr('class'); 
     window[field] += $(this).val() + ','; 

    }); 

var markertitle = [] 
var markerdescription = [] 
etc 

function() .... 

    $('#markermatrixadd input').each(function(){ 
     var field = $(this).attr('class'); 
     window[field].push($(this).val()) 

    }); 

更重要的是,擺脫window,並使用一個單獨的對象來存儲所有的數據:

var data = { 
    markertitle: "", 
    markerdescription: "" 
} 

function() .... 

    $('#markermatrixadd input').each(function(){ 
     var field = $(this).attr('class'); 
     data[field] += $(this).val() + ','; 

    }); 
+0

謝謝!我用你的第三種方法。非常感激! :) – melat0nin 2012-01-13 12:18:18

+0

一點都不!另外,請注意上面的@ Stefan的評論。 – georg 2012-01-13 14:14:40