i tak kilka razy, tyle ile produktów jest w bazie. Funkcjonalność jaką rozwijam to koszyk produktów, wobec czego potrzebuje jakoś je przekazywać do widoku z koszykiem. Przy każdym produkcie mam button w stylu:
Niestety, działa to w ten sposób, że pobiera pierwsze napotkane #prodname i #prod_price więc funkcjonalność działa tylko i wyłącznie dla produktu pierwszego na liście. Czy da się w jakiś sposób przekazać do funkcji ID produktu tak by działało dla każdego produktu na liście?
Kombinowałbym tak, by w linii @p.NAME dodać do span id identyfikator produktu, tak by wyglądało to tak:
a później przekazywałbym do funkcji odpowiednie ID z każdego buttona i funkcja wiedziałaby dzięki temu jakich danych szukać.
Ma to jakiś sens i jest wykonywalne w prosty sposób? Jasne, mógłbym to zahardcodować i założyć że w projekcie będzie X produktów, a każdy będzie obsługiwany przez inną funkcję, ale to trochę nieporęczne.
@IgorS: id="" jest unikalne nie może się powtarzać
zamien na
+ i trzymasz tylko ID i QTY w local storage
$(".button-add-to-cart").click(function() { var id = $(this).attr("data-id"); trzymanie nazwy, ceny, obrazka w localStorage to bardzo cieńki pomysł. zmienie sobie cenę klikając parę razy w firebugu
Czyli jeśli dobrze rozumiem, dodaje to data-id='id-produktu' i upewniam się, że id='' będzie zawsze unikalne dla każdego produktu. Jak wtedy w tej funkcji odwołać się do tego co znajduje się w data-id?
@KwadratowyPomidor: Czyli wtedy ta funkcja będzie całkowicie niepotrzebna? Może to banalne, ale nie do końca ogarniam temat, więc wolę zapytać. I czy w ogóle jest opcja by jakoś to data-id w tej funkcji wykorzystać, pomijając samą idee przechowywania tego w localStorage?
@motoradk: Aby zapewnić unikalność ID do nazwy dołożę id="'' dołoże ID produktu i otrzymam coś w stylu id="prodnameID", tylko jak do funkcji przekazać to ID?
@laki1: @KwadratowyPomidor: Nie na całość mam wpływ, do tego to tylko wycinki z kodu bo nie oczekuje gotowego rozwiązania a jedynie nakierowania na odpowiednie rozwiązanie.
Otóż, rozwijamy na studiach projekt, webowy i na chwilę obecną wygląda to tak, że na jednym z widoków wyświetlamy produkty, na zasadzie:
i tak kilka razy, tyle ile produktów jest w bazie. Funkcjonalność jaką rozwijam to koszyk produktów, wobec czego potrzebuje jakoś je przekazywać do widoku z koszykiem. Przy każdym produkcie mam button w stylu:
a funkcja reagująca na kliknięcie wygląda tak:
Niestety, działa to w ten sposób, że pobiera pierwsze napotkane #prodname i #prod_price więc funkcjonalność działa tylko i wyłącznie dla produktu pierwszego na liście. Czy da się w jakiś sposób przekazać do funkcji ID produktu tak by działało dla każdego produktu na liście?
Kombinowałbym tak, by w linii @p.NAME dodać do span id identyfikator produktu, tak by wyglądało to tak:
a później przekazywałbym do funkcji odpowiednie ID z każdego buttona i funkcja wiedziałaby dzięki temu jakich danych szukać.
Ma to jakiś sens i jest wykonywalne w prosty sposób? Jasne, mógłbym to zahardcodować i założyć że w projekcie będzie X produktów, a każdy będzie obsługiwany przez inną funkcję, ale to trochę nieporęczne.
#programowanie #html #webdev #informatyka
zamien na
+
i trzymasz tylko ID i QTY w local storage
$(".button-add-to-cart").click(function() {
var id = $(this).attr("data-id");
trzymanie nazwy, ceny, obrazka w localStorage to bardzo cieńki pomysł. zmienie sobie cenę klikając parę razy w firebugu
Czyli jeśli dobrze rozumiem, dodaje to data-id='id-produktu' i upewniam się, że id='' będzie zawsze unikalne dla każdego produktu. Jak wtedy w tej funkcji odwołać się do tego co znajduje się w data-id?
w localStorage jst ok bo nie robisz syfu w bazie a do bazy dodajesz wpisy z koszyka dopiero przy zamóieniu
tak na jana ja bym to zrobił tak
$(".button-add-to-cart").click(function() {
var basket = JSON.parse(localStorage.getItem("mybasket"));
if (!basket) {
basket
@IgorS: dodam jeszcze że to powyżej jest bez sensu, dane do name i price są załadowane podczas wczytanai strony, nie podczas kliknięcia
Dzięki za pomoc @KwadratowyPomidor