Newsgroup: it.comp.lang.javascript
Titolo: [URGENTE] perche se faccio 10+10 ottengo 1010 e non 20?????? O__o

Salve,
ho un porblema con un piccolo JavaScript che non dovrebbe far altro
che fare il totale dei prezzi inseriti in un form.
il problema e' che addizzionando i 4 totali (tot1, tot2 ecc...) non
ottengo il prezzo finale, ma ottengo una  stringa concatenata:
esempio: se ho
tot1 = 1
tot2 = 2
tot3 = 3
tot4 = 4
addizzionadoli, ottengo: 1234 e non 10!!!
perche??? T__T
qui di seguito ho inserito la funzione che ho scritto...
Ringrazio tutti coloro che mi aiuteranno!
function formtotale()
{
 var tot1 = 0
 var tot2 = 0
 var tot3 = 0
 var tot4 = 0
 var prezzototale = 0
 tot1 = document.forms[0].totale1.value
 tot2 = document.forms[0].totale2.value
 tot3 = document.forms[0].totale3.value
 tot4 = document.forms[0].totale4.value
 prezzototale = tot1 + tot2 + tot3 + tot4
document.forms[0].finale.value = prezzototale
}
            ________________________________
        / )|                                |( \
       / / |        Mauro "Tora" Pagano     | \ \
     _( (_ |   E-mail: 
ma....@flashnet.it
   | _) )_
    (((\ \>|_/->________________________<-\_|</ /)))
    (\\\\ \_/ /                          \ \_/ ////)
     \       /  Mi puoi trovare anche su: \       /
      \    _/      IRCnet  Canale #it      \_    /
      /   /         NickName: ^Mauro^        \   \
     /___/                                    \___\
 
http://www.geocities.com/Hollywood/Lot/6437/index.htm
     Membro del Mulegia Group .Inc Katsura Fans Club                  
                  Membro #13 dell'U&TFC
                 Fan #1 di Video Girl Ai

 cerchero' un'altra donna dentro ai sogni di Tarzan...

Ti sei dato la risposta da solo nel tuo post, si tratta infatti di stringhe
concatenate.
Se tua hai una stringa a = "ciao" e una stringa b = "mondo" e fai c = a + b
otterrai c = "ciaomondo". Ciò che avviene nel tuo caso è la stessa cosa in
quanto quei valori che leggi dal form non sono numeri, ma stringhe. E'
quindi necessario che tu li riconverta in numeri.
JavaScript mette a disposizione parseInt() per convertire una stringa in un
intero.
Eccoti lo script adattato:
function formtotale()
{
 var tot1 = 0
 var tot2 = 0
 var tot3 = 0
 var tot4 = 0
 var prezzototale = 0
 tot1 = parseInt(document.forms[0].totale1.value)
 tot2 = parseInt(document.forms[0].totale2.value)
 tot3 = parseInt(document.forms[0].totale3.value)
 tot4 = parseInt(document.forms[0].totale4.value)
 prezzototale = tot1 + tot2 + tot3 + tot4
document.forms[0].finale.value = prezzototale
}
Ciao
Carlo "Sauron" Pelliccia
http://members.tripod.it/sauronsw

scrivi:
prezzototale = Math.round(tot1+tot2+tot3+tot4);
Ciao
Giuseppe Di Natale
gdin...@camomillaitalia.it
-------------------------------------------
JS Labs - FAQ di it.comp.lang.javascript
http://jslabs.webhostme.com
jsl...@yahoo.com
-------------------------------------------
S.E.T.I. Project supporter
http://setiathome.ssl.berkeley.edu
news:it.scienza.astronomia.seti

Perche' il contenuto dei campi di testo viene considerato come $tringa e non
numerico (il tipo esatto e' variant, cmq)
Per effettuare il casting devi usare sulla stringa una funzione matematica
che restituisca un numero e non un errore.
Per esempio int va bene se hai a che fare con numeri interi come 1234...9
eccetera, altrimenti credo ti convenga
eval('VAR1'+'VAR2'+...+'VARn-1'+'VARn')
con VAR1, ,VARn variabili contenenti qualsiasi numero Reale di tipo "long"
(non mi ricordo il valore minimo e massimo ma e' decisamente grande)
Ciao
Nettuno