Newsgroup: it.comp.lang.javascript
Titolo: Problema NaN nell'inserimento prezzo

<b>Totale ordine:</b><br />"+totale+" \u20AC</p>";
	dinamicHtml+="<p><a href='#' onClick='erasAll()'>Cancella</a> <a
href='#' onClick='editAll()'>Modifica/Conferma</a></p>"
	document.getElementById('col_riepilogo').innerHTML=dinamicHtml;
	}
}
function readTotal() {
	var tot=0;
	var valPrice=0;
	var valQuant=0;
	var allNames = document.cookie.split(';');
	if (allNames[0]!=''){
	for(var i=0;i < allNames.length;i++) {
		var currentItem = allNames[i].split('=');
		value=currentItem[1].split('_');
		valPrice=parseFloat(value[0]);
		valQuant=parseFloat(value[1]);
		currentPrice=valPrice*valQuant;
		tot=tot+currentPrice;
	}
	}
	return tot;
}
**********************************
oltre a tutto il resto...
il codice sembra corretto e non riesco a capire dove trova difficoltà
di conversione o formattazione..
Se avete qualche idea ve ne sarei grato..
Grazie in anticipo..

 		valQuant=parseFloat(value[1]);
Un po' di sano debug: sei sicuro che non ci siano cookie "extra" oltre ai 
tuoi? un bel alert("*"+valPrice+"*"+valQuant) cosa dice? non sono qua i 
valori con caratteri che restituiscono NaN con il parseFloat?
Se sì prova a vedere cosa c'è in currentItem ...

 Se sì prova a vedere cosa c'è in currentItem ...
Stessa cosa 2 alert il primo:
expandable,0c mentre il secondo i valori esatti:
nome_prodotto,prezzo_qta

Ho capito il problema..
Praticamente da fastidio <h3 class="menuheader
expandable">agricoltura</h3>...
penso sia quello spazio a creare casino.. infatti togliendo la classe
tutto funziona bene..
Così mi da l'errore cui ho accennato aprendo il thread:
nella pagina:
<script type="text/javascript">
ddaccordion.init({
	headerclass: "expandable", ..
eccetera ....
nel css:
#sidebar1 .menuheader{
ecc...
richiamo il tutto con il codice di sopra:
<h3 class="menuheader expandable">
continuo sperando di poter postare molto presto la soluzione al
problema :)

 nome_prodotto,prezzo_qta
Non riesco bene a capire allora: parseFloat("expandable") ti dà 
(correttamente) NaN (perché il primo carattere non è numerico), mentre 
paraseFloat("0c") ti dà correttamente 0 (zero), perché converte in 
numerico il primo carattere e poi si ferma.
Qual è il problema quindi?

 Qual è il problema quindi?
l'ho scritto nel post sopra.. :)
grazie cmq del tuo interessamento..

 l'ho scritto nel post sopra.. :)
E non lo capisco: è corretto che fai parseFloat("expandable")? Se sì, ti 
darà per forza NaN ... se no, non ho capito.



Il Fri, 17 Sep 2010 01:17:21 -0700, stefano ha scritto:
[CUT]
Continuo a non capire: hai un cookie "expandable", cosa è? Lo hai creato 
te oppure te lo crea questo oggetto che usi (che non si sa cosa sia)?
Se è tuo, fai sapere a cosa serve, perché parseFloat("expandable") non 
darà mai un numero (neanche zero)
Se non è tuo, devi cancellare il cookie, oppure nella tua procedura 
saltare la somma if(isNaN(parseFloat("valore")))

 te oppure te lo crea questo oggetto che usi (che non si sa cosa sia)?
expandable è una classe css generata da una funzione javascript
(ddaccordion) che se cancellata risolve l'errore..



No (o non solo): da quello che hai postato "expandable" è anche un cookie, 
ed è quello che ti crea problemi.
un bel alert(document.cookie) cosa ti dice?

 un bel alert(document.cookie) cosa ti dice?
expandable=0c; CONFIDOR 200 O-TEQ 500 ML=52.00_1
il secondo è il prodotto registrato correttamente



e il primo?
Non so più come spiegarmi ... cosa è il primo "expandable=0c"? Dato che è 
un cookie, e dato che dici che li cancelli tutti:
 a) lo stai creando te. cos'è?
 b) lo crea l'oggetto che stai usando, o la procedura per cancellarli non 
funziona correttamente. In tal caso basta saltarlo quando li cicli, come 
ti ho indicato.

 ti ho indicato.
Più precisamente:
for(var i=0;i < allNames.length;i++) {
		var currentItem = allNames[i].split('=');
		if(currentItem[0].toUpperCase()=="EXPANDABLE")
		 	continue;
		value=currentItem[1].split('_');
		valPrice=parseFloat(value[0]);
		valQuant=parseFloat(value[1]);
		currentPrice=valPrice*valQuant;
		tot=tot+currentPrice;
	}

 	}

 ti ho indicato.
con la b riesco ad aggirare il problema, ma scusami se insisto secondo
me devo trovare una spiegazione sul fatto che una classe css non
l'accetta..
cmq cristiano ti ringrazio veramente di cuore per avere supportato
stefano e me..
ciao
Paolo

 l'accetta..
ma hai provato la modifica che ti ho indicato? ci vuole 1 minuto ...

> ma hai provato la modifica che ti ho indicato? ci vuole 1 minuto ...
sisi come ti ho detto prima funziona e ti ringrazio di cuore davvero..
rimangono le mie perplessità su come javascript gestisce i css ma me
lo studierò quando avrò tempo..
grazie davvero..

 studierò quando avrò tempo..
beh, non è javascript, sarà quell'oggetto che li gestisce in qualche 
modo ... di per sè javascript non gestisce i css; puoi accederci usando 
il DOM, ma appunto è ciò che fa l'oggetto che usi che conta, non 
javascript in sè.