Aktywne Wpisy
xiv7 +6
Jestem starym chłopem który potrzebuje gier które niosą ze sobą jakąś filozofię, fabułę, coś uniwersalnego na temat życia ( ͡° ͜ʖ ͡°) a nie tylko zwykłe klikanie. Np takie Life is Strange 1 albo Edith Finch. Póki co przymierzam się do Life is Strange 3, RDR2, The Last of Us, dobrze myślę? Polecacie coś jeszcze?
#gry #pcmasterrace
#gry #pcmasterrace
FFFFFF +279
Jeszcze godzinę obchodzę swoje 36 #urodziny. I tak nikt tego nie zaplusuje.
Problem występuje w momencie dodania do funkcji usuwania funkcji która dodaje produkty poprzez .innerHTML po to aby odświeżyło mi wózek z aktualnymi produktami, bez dodawania jej funkcja działa dobrze i mogę usunąć kilka produktów na raz. Dodanie jej powoduje, iż eventListener działa tylko za pierwszym razem i kolejne kliknięcia nie robią nic. Podejrzewam, że błąd występuje w pętli for ale nie wiem jak to naprawić.
Kod:
let remove = document.querySelectorAll(".cart--remove");
for (let i = 0; remove.length > i; i++) {
remove[i].addEventListener('click', () => {
let attr = document.querySelectorAll('.cart__product')[i + 1].getAttribute("attr");
removeProduct(attr);
});
};
function removeProduct(attr) {
let item = localStorage.getItem('productsInCart');
item = JSON.parse(item);
let totalCount = localStorage.getItem('totalCount');
totalCount = parseInt(totalCount);
if (totalCount != null) {
localStorage.setItem('totalCount', totalCount - (item[attr].price * item[attr].inCart));
} else {
localStorage.setItem('totalCount', item[attr].price)
}
delete item[attr];
localStorage.setItem('productsInCart', JSON.stringify(item));
addToCart() //TUTAJ, bez tego eventListener działa wielokrotnie, a po dodaniu działa tylko raz.}
Consola nie wyrzuca żadnego błędu.
#javascript
Nadpisuję więc pewnie będzie tak jak mówisz. Dzięki zaraz się w to zagłębię.
function addToCart() {
let totalCount = localStorage.getItem('totalCount');
let cartProducts = document.querySelector(".cart__products");
let cartItems = localStorage.getItem('productsInCart');
cartItems = JSON.parse(cartItems);
if (cartProducts && cartItems) {
cartProducts.innerHTML = "";
Object.values(cartItems).map(item => {
cartProducts.innerHTML +=
![](./images/${item.tag}.png)
${item.name}
$${item.price}
${item.inCart}
$${item.price * item.inCart}
});
cartProducts.innerHTML +=
Total price
$${totalCount}
}
}
kliknij prawym przyciskiem myszy na plusa w komentarzu -> zbadaj element po prawej stronie masz zakładkę event listeners i dalej to już z górki
https://www.stanleyulili.com/javascript/how-to-find-event-listeners-on-a-dom-node-when-debugging/
https://developers.google.com/web/updates/2015/05/get-and-debug-event-listeners