Javascript - 使用类名来指定要赋值的变量

时间:2012-01-13 11:41:47

标签: 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() + ',';

    });

这很简单我敢肯定,但我认为我的大脑有点油腻:(

1 个答案:

答案 0 :(得分:4)

你的vars似乎不是全球性的。它们必须在任何功能之外声明。除此之外,您无法向对象添加任何内容({})。使用字符串或数组:

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() + ',';

    });