Newsgroup: it.comp.lang.javascript
Titolo: NaN: che vvor' di'?

Ho una pagina con una serie di articoli e con dei text contenenti il prezzo
dell'articolo, e di fianco un altro text che deve essere modificato
dall'utente finale, per indicare la quantita' degli articoli.
Il mio problema e' questo: dato che per ogni rigo faccio la moltiplicazione
tra il prezzo e la quantita', vorrei che in un text venga visualizzato il
totale.
Ho creato uno script fatto in questo modo:
-------------------------
function calcolaTot()
{
tot = tot + (eval(document.forms['nomeform'].quantita) *
eval(document.forms['nomeform'].prezzo));
// La riga qui sopra e' ripetuta per tutti gli articoli presenti (tramite
ASP),
// ed ovviamente il nome dei campi cambia a seconda dell'articolo.
...
document.forms['nomeform'].TOTALE.value = tot
}
-------------------------
dove nomeform e' il nome che effettivamente ho dato al form, quantita' e' il
nome del campo da modificare, prezzo e' il nome del campo che contiene il
prezzo dell'articolo e TOTALE e' il nome del text che dovrebbe contenere il
totale (che fantasia, eh? :-)) ).
In ogni text quantita ho messo
onChange="calcolaTot()"
solo che appena ci metto un numero, nel text TOTALE appare NaN invece del
totale, e il bello e' che ne' IE ne' NS mi segnalano alcun errore.
Che significa quel NaN? E soprattutto cos'e' che sbaglio?
--
ciao
gelty
--
Visita 
http://www.sifor.it
Elimina *toglimi* per le risposte

Ciao:
Corrisponde a un valore speciale
che indica che un'espressione
aritmetica ha restituito un valore
non numerico.
Not a Number.
controlla con:
isNaN(valorenum)
se ti ritorna false il valorenum è un numero
altrimenti è un NaN.
prova a mettere:
tot = tot +
isNaN((eval(document.forms['nomeform'].quantita)
*eval(document.forms['nomeform'].prezzo)))==false?
(eval(document.forms['nomeform'].quantita)
*eval(document.forms['nomeform'].prezzo)):0;
--
--
Bye
Ro<*¿*>berto

 wrote in message
7r8msi$i00$1...@stargate1.inet.it...


 non numerico.
Grazie.
Ma con eval(nomevariabile) non si ottiene proprio il valore numerico di una
variabile?
Io sono sicuro che in nei form ci sono dei numeri (ce li metto io), quindi
dovrebbe funzionare... o no?


 dovrebbe funzionare... o no?
sembra di no visto che dici di trovare un NaN,
controlla e netti nella funzione
 if(isNaN(num. da controllare))alert(num. da
controllare);
dovresti vedere quale è il numero non numero..
Ciao


 dovresti vedere quale è il numero non numero..
Ho messo questo controllo:
------------------------------
qta = parseInt(document.forms['giovanni'].LEN001);
przo = parseInt(document.forms['giovanni'].LEN001b);
alert(qta);
alert(przo);
if(isNaN(qta))alert(qta);
if(isNaN(przo))alert(przo);
------------------------------
Tutti e quattro gli alert mi restituiscono NaN !!! :-(((((
(giovanni e' il nome del form, LEN001 e LEN001b sono i nomi dei campi).
Non so piu' dove sbattere la testa...
Quello che davvero non capisco e' che se gli dico
qta = parseInt(document.forms['giovanni'].LEN001);
come mai il contenuto di qta e' "NaN" e non, ad esempio "undefined"?





 przo =
parseInt(document.forms['giovanni'].LEN001b);
togli il parseInt()
ed ottieni undefined con Net
e null con IE, ma credo tu ottenga [object]
se č cosě sai che č sbagliato
il riferimento al form..
document.forms['giovanni'].LEN001b
č un elemento del form, cosa ci vuoi fare
con quello??
un.value ad es. !!
;-)
Cao..
scusa prima non avevo guardato a come ti riferivi
agli elementi del form..
--
--
Bye
Ro<*ż*>berto

 un.value ad es. !!
Credevo che il value non fosse obbligatorio... convinzione forse derivata da
ASP.
Comunque continua a non funzionare!!!
BBBUUUAAAAAAAAHHHHHHH!!!!!!!!! :*-((((((((((((((
Ho messo degli alert che mi mostrano il contenuto dei campi, e ora mi mostra
il reale contenuto, cioe' i numeri, solo che quando faccio la conversione
non viene trasformato in intero!
Infatti (una prova con i risultati):
qta = parseInt(document.forms['giovanni'].LEN001.value);
przo = parseInt(document.forms['giovanni'].LEN001b.value);
alert("-" + qta + "- "); // <- restituisce 1
alert("-" + przo + "- ");// <- restituisce 100000
e fin qui tutto ok, ma dopo:
tot = tot+(qta*przo);
alert("-" + tot + "- ");// <- restituisce NaN!!!
I segni - li ho aggiunti per controllare che non ci fossero spazi.
Ho provato anche il contrario, cioe' a mettere parseInt nella
moltiplicazione tra qta e przo invece che nella loro assegnazione, ma il
risultato e' identico.
Se non risolvo per lunedi', mi vado a chiudere in convento, con buona pace
della mia ragazza...
PS: quale potrebbe essere un metodo alternativo per fare quello che voglio?


ci siamo gelty,
ci siamo, ormai è fatta me lo sento!
;-)
i valori da un form sono string..
e tu metti giustamente il parseInt()
ma quel tot lo hai definito come
var  tot=0;
??
PS: il web non può perdere un debugger come te,
il convento deve aspettare!


un'altra possibilità anche se remota e che
converti i numeri in stringhe con
alert("-" + qta + "- "); // <- restituisce 1
alert("-" + przo + "- ");// <- restituisce 100000
usa :
alert(qta); // <- restituisce 1
alert( przo);// <- restituisce 100000
--


qta = parseInt(document.forms['giovanni'].LEN001.value);
przo = parseInt(document.forms['giovanni'].LEN001b.value);
Penso che a te interessi il valore, non certo convertire in numero un
oggetto del form! :)
---
the fly on the net
webmaster di "the devil inside"
http://members.tripod.com/netfly
e-mail:
net...@netbusiness.it

 il convento deve aspettare!
Fiu'... meno male! E grazie a te! :-)
Ma forse mi hai salvato anche dal manicomio...
Grazie ancora!
