• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zliczenie odpowiedniej liczby kliknięć dla danego elemenu

Object Storage Arubacloud
+1 głos
356 wizyt
pytanie zadane 23 listopada 2021 w JavaScript przez ShockWave Bywalec (2,350 p.)

Cześć,

mam problem ze zliczeniem ilości dodanych produktów do koszyka. Na wstępie pobieram 20 elementów przez pętlę i umieszczam je w DOM. Dla każdego elementu mam przycisk dodaj do koszyka, chciałbym aby po kliknięciu w jeden produkt wiele razy pojawiał się on w koszyku tylko raz i zliczana była ilość tych produktów. Niestety nie mam pomysłu jak mógłbym to zrobić. Myślałem o jakimś if, który sprawdzał by nazwę pizzy, ale chyba byłby za bardzo rozbudowany.

.then(data => {
    let valueCurrency = 0;
    data.forEach(element => {
        const shoppingCart = document.querySelector(".shoppingCart");
        const pizzas = document.querySelector(".pizzas");
        const box = document.createElement("div");
        const img = document.createElement("img");
        const title = document.createElement("h3");
        const ingredients = document.createElement("p");
        const price = document.createElement("h4");
        const btn = document.createElement("button");
        const totalPrice = document.querySelector(".totalPrice");
        
        box.className = "box";
        ingredients.className = "ingredients"
        btn.className = "btn";
        
        img.src = element.image;
        img.style.width = "250px";
        img.style.height = "250px";
        
        title.innerHTML = element.title;
        
        ingredients.innerHTML = element.ingredients;
        
        price.innerHTML = element.price.toFixed(2) + " zł";
        
        btn.innerHTML = "Dodaj do koszyka";
        
        box.appendChild(img);
        box.appendChild(title);
        box.appendChild(ingredients);
        box.appendChild(price);
        box.appendChild(btn);
        pizzas.appendChild(box);


        btn.addEventListener("click", (e) =>{
            valueCurrency = valueCurrency + element.price;

            console.log(valueCurrency);
            const pizzasList = document.createElement("li");
            const pizzaPrice = document.createElement("p");
            const count = document.createElement("h5");
            const btnRemove = document.createElement("button");
            btnRemove.innerText = "X";
            
            pizzaPrice.innerText = price.textContent;
            
            totalPrice.innerText = "Całkowita cena: " + valueCurrency.toFixed(2);

            pizzasList.innerText = title.textContent + " " + price.textContent;
            console.log(price.textContent)
            shoppingCart.prepend(pizzasList);
        })
    });

link do repo: https://github.com/ItsShock/internJavaScript

Proszę o rady i z góry dziękuję za pomoc.

1 odpowiedź

+1 głos
odpowiedź 24 listopada 2021 przez Marchiew Dyskutant (7,690 p.)
wybrane 24 listopada 2021 przez ShockWave
 
Najlepsza
Możesz mieć tablicę z koszykiem zakupowym i do niej wrzucać kliknięte produkty i na nim robić co chcesz.
komentarz 24 listopada 2021 przez ShockWave Bywalec (2,350 p.)
I jeśli pojawią się dwie takie same wartości to się z duplikują? Czy to kwestia wyciągnięcia z niej danych?
komentarz 24 listopada 2021 przez Wiciorny Ekspert (269,710 p.)
no ale to od Ciebie zależy w jaki sposób implementujesz strukturę obiektu, tak aby w swoim zbiorze był on rozróżnialny na tle innych tej samej kategorii
komentarz 24 listopada 2021 przez Marchiew Dyskutant (7,690 p.)

@ShockWave, Twoje produkty mają id, więc możesz do koszyka wrzucać tylko id (lub całe obiekty) z powtórzeniami i wyliczać odpowiednio cenę. Możesz wrzucać id (lub całe obiekty) + dla każdego mieć count i wyliczać odpowiednio cenę, możesz mieć same id (lub całe obiekty) + count i  obok w kodzie zmienną totalPriceToPay. Pełna dowolność. Napewno nie wymieniłem wszystkich możliwości.

komentarz 24 listopada 2021 przez ShockWave Bywalec (2,350 p.)
a masz może jakiś przykład z implementacją dla takiego przypadku: " Możesz wrzucać id (lub całe obiekty) + dla każdego mieć count i wyliczać odpowiednio cenę" ?

Podobne pytania

0 głosów
2 odpowiedzi 208 wizyt
+2 głosów
2 odpowiedzi 261 wizyt
0 głosów
2 odpowiedzi 235 wizyt
pytanie zadane 14 września 2022 w JavaScript przez kordix Gaduła (3,910 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...