По клику на иконку в модальном окне, у меня должны удаляться элементы
Только проблема в том, что я не могу удалить все элементы, может подскажите как удалять элементы правильно по клику на иконку?
function removeItem() {
$(".modal").on("click", ".remove-item", function() {
let delItem = shoppingCart.listCart();
console.log(delItem);
for (let i in delItem) {
// console.log(delItem[i].id);
shoppingCart.removeItemFromCart(delItem[i].id);
break;
}
modalCart();
});
}
obj.removeItemFromCart = function(id) {
cart = cart.filter(function(x) { return x.id !== id});
saveCart();
};
if ($(this).prop('checked')) {
let a = $(this).parent().siblings('a').attr('href');
let title = $(this).parent().siblings('a').attr('title');
let img = $(this).parent().siblings().children('img').attr('src');
let p = $(this).parent().siblings('.copy, .copy-2');
shoppingCart.addItemToCart(id, a, title, img, p);
modalCart();
modal.addClass('modal-show');
} else {
shoppingCart.removeItemFromCart(id);
modalCart();
}
[
{"id":"check-option-1","a":"http://lorempixel.com/30/30/city","title":"TITLE + добавляет всплывающую подсказку к тексту ссылки","img":"http://lorempixel.com/30/30/city","p":["1","1.1"]},
{"id":"check-option-2","a":"http://lorempixel.com/30/30/technics","img":"http://lorempixel.com/30/30/technics","p":["2","2.1"]}
]
но у вас там проблемы похлеще. в локалсторадже лежат объекты, а вы читаете значения из локалсторадж в переменную cart, которая должна быть массивом, но после загрузки из локалсторадж становится объектом а затем пытаетесь обратится к cart как к массиву
obj.removeItemFromCart = function(id) {
console.log("45 строка:",cart);
cart = [] - тут изначально добавить пустой массив
cart = cart.filter(function(e) { return e.id !== id});
saveCart();
};
если у вас в локалсторадж хранятся записи вида [item1, item2, и т.д] то я не прав и у вас все норм.
если же у вас в локалсторадж хранятся записи вида {id1:item1, id2:item2, и т.д} то тогда нарушена логика
{id1:item1, id2:item2, и т.д}
?[item0, item1, и т.д]
- массив данных
и еще, у вас в вашем варианте используются именно цифровые индексы, то есть вы попытались смешать оба способа, но получили только усложнение и никакого профита, так как по ID вы элемент по id уже не сможете достать.
{
"check-option-1": {id: "check-option-1", a: "http://lorempixel.com/30/30/city", title: "TITLE + добавляет всплывающую подсказку к тексту ссылки", img: "http://lorempixel.com/30/30/city", p: Array(2)}
"check-option-2": {id: "check-option-2", a: "http://lorempixel.com/30/30/tech
}
0: Item {id: "check-option-1", a: "http://lorempixel.com/30/30/city", title: "TITLE + добавляет всплывающую подсказку к тексту ссылки", img: "http://lorempixel.com/30/30/city", p: Array(2)}
1: Item {id: "check-option-2", a: "http://lorempixel.com/30/30/tech", img: "http://lorempixel.com/30/30/city", p: Array(2)}