Wpis z mikrobloga

Mireczki, mam takie pytanie, może głupie, może mądre, nie wiem.

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:

|

@p.ID |

@p.NAME |

@p.PRICE |


@p.NAME

@p.PRICE


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:

$(document).ready(function () {

name = $('#prodname').text();

price = $('#prodprice').text();


$("#button-add-to-cart").click(function() {

var basket = JSON.parse(localStorage.getItem("mybasket"));

if (!basket) {

basket = new Array();

}

basket.push({

product: name,

price: price,

img: img

});

localStorage.setItem("mybasket", JSON.stringify(basket));

window.location.href = "/showproducts"

});

});`


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:

@p.NAME


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
  • 17
@KwadratowyPomidor: Ten obrazek to do wywalenia swoją drogą.

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?
@IgorS: jedni trzymają rzeczy w koszyku w bazie danych drudzy w localStorage

w localStorage jst ok bo nie robisz syfu w bazie a do bazy dodajesz wpisy z koszyka dopiero przy zamóieniu

I czy w ogóle jest opcja by jakoś to data-id w tej funkcji wykorzystać, pomijając samą idee przechowywania tego w localStorage?


tak na jana ja bym to zrobił tak

$(".button-add-to-cart").click(function() {
var basket = JSON.parse(localStorage.getItem("mybasket"));
if (!basket) {
basket