Witajcie,
Po kliknięciu addProductBtn zapisuje dane z inputów do localStorage i następnie wyświetlam je w wybranej kategorii. Problem polega na tym, że dopiero po kliknięciu addProductBtn wyświetlają się wszystkie zapisane w localStorage dane, a chcę aby nie znikały po odświeżeniu strony. Próbowałam zrobić to takim zapisem na końcu skryptu, ale niestety nie działa.
$(window).on("load", renderProduct, false);
Dodatkowo za każdym kazem dodaje mi od nowa wszystkie produkty, które już były wcześniej dodane.. Poniżej kod js:
$(function () {
const newProductName = $('.new-product-name');
const newProductAmt = $('.new-product-amt');
const addProductBtn = $('.new-product-add');
const categorySelected = $('#category-select');
// Local Storage
const product = {
category: "",
name: "",
amount: ""
};
// save date in JSON
function saveProductToLocalStorage(newObject) {
let dataFromLocalStorage = [];
if (localStorage.getItem("products") != null) {
dataFromLocalStorage = JSON.parse(localStorage.getItem("products"));
dataFromLocalStorage.push(newObject);
localStorage.setItem("products", JSON.stringify(dataFromLocalStorage));
} else {
dataFromLocalStorage.push(newObject);
localStorage.setItem("products", JSON.stringify(dataFromLocalStorage));
}
}
// save new product in localStorage
if (addProductBtn) {
addProductBtn.on('click', function (e) {
e.preventDefault();
if (newProductName.val() != "" && newProductAmt.val() >= 1 && categorySelected.val() != "") {
product.name = newProductName.val();
product.amount = newProductAmt.val();
product.category = categorySelected.val();
saveProductToLocalStorage(product);
console.log("Zapisano", product);
// take date from localStorage
function renderProduct() {
let allProducts = JSON.parse(localStorage.getItem("products"));
allProducts.forEach(function (singleProduct) {
// create new product with delete option
const newProduct = $('<div class="new-product"></div>');
newProduct.html(singleProduct.name);
const delProduct = $('<i class="fas fa-trash-alt"></i>');
delProduct.on('click', function () {
$(this).parent().remove()
});
newProduct.append(delProduct);
// add this product to the selected category
if (singleProduct.category == "veg") {
$('.vege-category').append(newProduct);
} else if (singleProduct.category == "fruits") {
$('.fruits-category').append(newProduct);
} else if (singleProduct.category == "dairy") {
$('.dairy-category').append(newProduct);
}
//clean the inputs
newProductName.val("");
newProductAmt.val("");
});
}
renderProduct();
}
});
}
$(window).on("load", renderProduct, false);
});
Będę wdzięczna za każdą pomoc. :)