for()循环仅返回数组的最后一个元素

时间:2017-02-14 20:56:26

标签: javascript jquery html

我知道这个问题在这里已经有了答案:Javascript array with for loop, returns only last element,但我还没有找到我的具体案例的答案!我正在使用输入字段克隆表单的特定部分,每个输入字段都有一个唯一的 id ,并在数组中使用这些ID:var arrayFields = ['streamsource','amountgen','running_cost','taxdue','periodrange'];这样当我克隆父div时在此表单字段中,每个输入字段的ID和name属性(对应于上面数组的当前元素)将使用父克隆容器的当前增量值进行更新。只有表单字段的名称属性以及表单字段 ID属性,对应于数组的最后一个元素才会受到影响,而不是只增加相应的表单字段,所有表单字段的名称,ID属性将替换为最后一个数组元素+父克隆容器增量值:

    var n = parseInt(cloned + 1);
    var nElement = $('.clone').clone().attr('id','clone' + n);

        for(var i = 0; i <= (arrayFields.length - 1); i++){
            nElement.find('.massive').attr('id',arrayFields[i]+n);
            nElement.find('.massive').attr('name','massive['+arrayFields[i]+n+']');
        }

如何使其正常工作?

1 个答案:

答案 0 :(得分:1)

您应该使用each来影响所有这些:

var n = parseInt(cloned + 1);
var nElement = $('.clone').clone().attr('id','clone' + n);

nElement.find('.massive').each(function(index) {
    $(this).attr('id', arrayFields[index] + n)
           .attr('name', 'massive[' + arrayFields[index] + n + ']');
});