构造一个对象数组

时间:2013-07-24 15:13:34

标签: javascript jquery

我需要提交一个Collection(set,list,array),其中包含以下对象:

id, phoneNumber, phoneType

我有一堆div,这里有一些HTML示例:

<div id="f9" class="facilityBox">
    <div style="float:left;">
        <label>BRANCH</label>
    </div>
    <div style="float:right;"> <a href="#" onclick="return Location.submitUpdateFacility(9)'">Save changes</a> 
    </div>
    <div class="phoneSet">
        <input type="text" value="787-788-1111" class="phones" name="number" />
        <select class="phoneType" name="type">
            <option selected="selected" value="PHONE">Phone</option>
            <option value="FAX">Fax</option>
        </select>
        <input type="hidden" value="6" class="phoneId" name="id" />
    </div>
    <div class="phoneSet">
        <input type="text" value="787-795-4095" class="phones" name="number" />
        <select class="phoneType" name="type">
            <option value="PHONE">Phone</option>
            <option selected="selected" value="FAX">Fax</option>
        </select>
        <input type="hidden" value="106" class="phoneId" name="id" />
    </div>
</div>

此div的ID为f+identifier,所以目前为f9

我到目前为止的js是:

Location.submitUpdateFacility = function (facilityId) {
    $("#updateFacility input[name=index]").val(facilityId);
    var id = facilityId;
    var phones;
    $("#" + id + " .phoneSet").each(function () {
        phones += {
            id: $(".phoneId input[name=id]").val(),
            phoneNumber: $(".phones input[name=number]").val(),
            phoneType: $(".phoneType select[name=type]").selected().val()
        };
    });    
};

我的问题在于Firebug / Chrome控制台调试,它不会进入循环,因此不会创建任何数组。我做错了什么?

1 个答案:

答案 0 :(得分:1)

问题似乎是您将“9”作为函数参数传递,然后将其作为"#" + id + " .phoneSet"转换为jquery选择器。这会生成"#9 .phoneSet",这是不正确的。

您应该使用"#f" + id + " .phoneSet"

还应该注意,您使用的其他选择器(例如“.phoneId input [name = id]”)可能还需要在完全按预期工作之前进行更正。