Обновить значения в объекте в sessionStorage - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть этот объект, хранящийся в sessionstorage:

0: {FromName: "FName", FromLastName: "", FromAddress: "F Street", FromCountry: "Portugal", FromCity: "FC",…}
1: {FromName: "FName", FromLastName: "", FromAddress: "F Street", FromCountry: "Portugal", FromCity: "FC",…}
2: {FromName: "", FromLastName: "", FromAddress: "", FromCountry: "", FromCity: "", FromPostCode: "",…}

Он отображает список элементов корзины покупок.

Когда я в корзине, у меня есть кнопка, которая заставляет менявозможность отображать значения в форме, и он уже получает правильные значения из sessionStorage.

Вопрос в том, как я могу обновить значения, используя отображаемую форму и правильно обновленный объект?

Это код, который получает правильные значения от объекта в sessionstorage:

  e.preventDefault();

  var itemsInCart = JSON.parse(sessionStorage.getItem('productList'));
  var ID = $(this).data('id');

  for (var i = 0; i < itemsInCart.length; i++) {

    var itemsinCartID = itemsInCart[i].keyID;

    if (ID == itemsinCartID) {

    $('.product-image').attr('src', itemsInCart[i].Product);
    $('#message').val(itemsInCart[i].Message);

    // from inputs
    var fromName = $('#from-name-input').val(itemsInCart[i].FromName);
    var fromLastName = $('#from-last-name-input').val(itemsInCart[i].FromLastName);
    var fromAddress = $('#from-address-input').val(itemsInCart[i].FromAddress);
    var fromCountry = $('#from-country-input').val(itemsInCart[i].FromCountry);
    var fromCity = $('#from-city-input').val(itemsInCart[i].FromCity);
    var fromPostCode = $('#from-postalcode-input').val(itemsInCart[i].FromPostCode);
    var fromPhone = $('#from-phone-input').val(itemsInCart[i].FromPhone);

    // to inputs
     var toName = $('#to-name-input').val(itemsInCart[i].ToName);
     var toLastName = $('#to-last-name-input').val(itemsInCart[i].ToLastName);
     var toAddress = $('#to-address-input').val(itemsInCart[i].ToAddress);
     var toCountry = $('#to-country-input').val(itemsInCart[i].ToCountry);
     var toCity = $('#to-city-input').val(itemsInCart[i].ToCity);
     var toPostCode = $('#to-postalcode-input').val(itemsInCart[i].ToPostCode);
     var toPhone = $('#to-phone-input').val(itemsInCart[i].ToPhone);
    break;
    }
  }

});

Это форма, заполненная кодом выше: enter image description here

А затем я хочу использовать кнопку «Изменить сообщение» в форме, чтобы обновить новые значения, которые я изменил в форме.

1 Ответ

0 голосов
/ 06 ноября 2019

Если я правильно понимаю. Вы хотите обновить элемент sessionStorage новым из формы. Да? Я хотел бы рассмотреть немного изменить код на:

const tempObject = {
  FromName: $('#from-name-input').val(itemsInCart[i].FromName),
  FromLastName = $('#from-last-name-input').val(itemsInCart[i].FromLastName)
}
Object.assign(itemsInCart, tempObject)
sessionStorage.setItem('productList', JSON.strigify(itemsInCart));
...