2017-08-30 41 views
0

我正在迭代動態生成的div,其中包含一個表。當我遍歷行時​​,假設我有兩行,我得到兩個結果。但問題是兩個結果都包含最後一行表的值。這裏是我的代碼:迭代表的行

$(this) 
    .children('.js-charge-data') 
    .children('.js-charging-line-wrapper') 
    .find('.js-chargeline-tbody') 
    .children('tr') 
    .each(function() { 
    chargingLineJSON['chargingType'] = 'IoT'; 
    chargingLineJSON['chargeCategoryName'] = $(this).find('.js-charging-category').val().trim(); 
    chargingLineJSON['subCategoryName'] = $(this).find('.js-charging-sub-category').val().trim(); 
    chargingLineJSON['backEndProductName'] = $(this).find('.js-charging-sub-category').children(':selected').data('backend_product_name'); 
    chargingLineJSON['shipToAddressId'] = '123'; 
    chargingLineJSON['chargePerUnit'] = $(this).find('.js-unit-charge').val().trim(); 

    chargeLineListJSON['chargingLine'] = chargingLineJSON; 
    chargingLineJSONArray.push(chargeLineListJSON); 
    }); 

請讓我知道我在做什麼錯誤?

+3

請包括所有相關的代碼(html) –

回答

2

您正在推動同一對象chargingLineJSON到陣列,在.each()

.each(function() { 
    //Create a new object 
    var chargingLineJSON = {}; 
    //Your code 
    chargingLineJSONArray.push(chargeLineListJSON); 
}); 

作爲每@Rajesh評論

對象使用參考複製創建新的對象。因此,在第二次迭代中,當您將值設置爲對象的屬性時,您將覆蓋內存位置處的值而不是位於locat變量中。因此,相同的值

+1

感謝您的信任。 :-) – Rajesh

+0

@Satpal謝謝。這是問題。 –

+0

@Rajesh,我打算解釋,但你評論因此.... – Satpal

1

如在@Satpalanswer中評論和記入的,問題是由於將對象複製爲參考。

雖然爲了減少數據的重複,但並未在我的回答中重複評論。

你可以使用這樣的東西。

$(this) 
    .find('.js-charge-data .js-charging-line-wrapper .js-chargeline-tbody tr') 
    .each(function() { 
    let category = $(this).find('.js-charging-category'); 
    let subCategory = $(this).find('.js-charging-sub-category'); 
    let selectedSubCategory = $(this).find('.js-charging-sub-category :selected'); 
    let unitCharge = $(this).find('.js-unit-charge'); 

    chargingLineJSONArray.push({ 
     chargingType: 'IoT', 
     shipToAddressId: '123' 
     chargeCategoryName: category.val().trim(), 
     subCategoryName: subCategory.val().trim(), 
     backEndProductName: selectedSubCategory.data('backend_product_name'), 
     chargePerUnit: unitCharge.val().trim() 
    }); 

    // Not sure what this line is about? 
    // You are saving reference to self in a property. 
    // chargeLineListJSON['chargingLine'] = chargingLineJSON; 
    }); 

注:我沒有測試代碼標記丟失。