
Originariamente inviata da
KillerWorm
Ciao
Risposta breve: nella tua pagina togli i commenti dagli span dove ci sta il prezzo.
io... ma solo 5 minuti per capire dove stava il problema
Risposta estesa:
Ho giocato un po' sulla pagina e spulciato nello script per verificare dove sta e cosa fa la funzione usata per aggiungere gli articoli al carrello.
Di fatto tale funzione (
addToCart) si basa sul prezzo che è riportato sulla pagina, o meglio, preleva letteralmente il contenuto testuale che sta dentro lo <span> (quello che teoricamente dovrebbe contenere il valore del prezzo) sotto ogni relativo articolo, quindi ne fa un replace per eliminare, sostanzialmente, tutti i caratteri mantenendo solo le cifre numeriche e il punto.
Ora, dove sta il problema?
Prendiamo questo caso (il primo articolo di quella pagina):
codice:
<span class="item_price">15.00
€</span>
la funzione preleva il valore "
15.00 €" (in teoria c'è anche un carattere di ritorno a capo ma poco cambia) quindi elabora il dato e restituisce il valore "
15.00" ripulito da tutti i caratteri "inutili".
Fin qui tutto ok.
Prendiamo invece un caso dove avviene il problema (dove tu hai verificato che il prezzo viene aumentato di un centesimo), ad esempio il 6° articolo.
Cosa c'è esattamente dentro il relativo span del prezzo?
Dall'analisi degli elementi vedo questo:
codice:
<span class="item_price">9.50 €<!--6.65--></span>
C'è un commento HTML dentro lo span; presumo fosse solo un esempio di prezzo o forse un precedente valore mantenuto commentato per un qualche motivo... boh
Certo, è solo un commento che hai fini pratici non dovrebbe influire sulle funzionalità della pagina... o forse sì
Cosa avviene nella funzione
addToCart?
Stessa storia di prima: la funzione prende l'intero valore trovato dentro lo span "
9.50 €<!--6.65-->" quindi lo ripulisce dai caratteri inutili e restituisce esattamente il valore "
9.506.65".
Nelle operazioni successive viene poi convertito nel valore numerico
9.506 attraverso un
parseFloat; tale valore viene usato per eseguire le operazioni nel carrello anche se sulla pagina, nel carrello, questo valore è troncato alla seconda cifra decimale.
La causa è quindi la presenza di quei commenti dentro lo span, i quali contengono dei caratteri numerici che non dovrebbero essere considerati ma, di fatto, lo sono.
Per risolvere, in modo semplice, ripulisci i contenuti di quegli span, limitandoti ad inserire solo i prezzi e nulla di più.