Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Javascript - Somma tra addendi con form?
Forum - Javascript - Somma tra addendi con form?

Avatar
perillitommaso (Normal User)
Pro


Messaggi: 186
Iscritto: 28/01/2014

Segnala al moderatore
Postato alle 16:24
Martedì, 04/11/2014
Codice sorgente - presumibilmente Javascript

  1. <html>
  2. <head>
  3. <title>Somma tra addendi</title>
  4. <script>
  5. function somma(){
  6.  s = (document.modulo.addendo1.value*1)+document.modulo.addendo2.value;
  7.         document.modulo.somma.value = s;
  8.         return true;
  9.         }
  10. </script>
  11. </head>
  12. <body>
  13. <form name="modulo" method="get" action="http://www.google.com" onSubmit="return(somma())">
  14. <input type="txt" name="addendo1">Insersci il primo addendo<br>
  15. <input type="txt" name="addendo2">Inserisci il secondo addendo<br>
  16. <input type="submit" name="go" value="Fai la somma"><br>
  17. <input type="txt" name="somma">Risultato<br>
  18.  
  19. </form>
  20.  
  21. </body>
  22. </html>


quando clicco su "fai la somma" mi porta direttamente su google... non riesco a capire qual'è il problema :(

PM Quote
Avatar
D@vide (Member)
Expert


Messaggi: 450
Iscritto: 30/06/2010

Segnala al moderatore
Postato alle 17:14
Martedì, 04/11/2014
Testo quotato

Postato originariamente da perillitommaso:

Codice sorgente - presumibilmente Javascript

  1. <html>
  2. <head>
  3. <title>Somma tra addendi</title>
  4. <script>
  5. function somma(){
  6.  s = (document.modulo.addendo1.value*1)+document.modulo.addendo2.value;
  7.         document.modulo.somma.value = s;
  8.         return true;
  9.         }
  10. </script>
  11. </head>
  12. <body>
  13. <form name="modulo" method="get" action="http://www.google.com" onSubmit="return(somma())">
  14. <input type="txt" name="addendo1">Insersci il primo addendo<br>
  15. <input type="txt" name="addendo2">Inserisci il secondo addendo<br>
  16. <input type="submit" name="go" value="Fai la somma"><br>
  17. <input type="txt" name="somma">Risultato<br>
  18.  
  19. </form>
  20.  
  21. </body>
  22. </html>


quando clicco su "fai la somma" mi porta direttamente su google... non riesco a capire qual'è il problema :(



Il "problema" è che hai copiato questo codice al posto di pensare con la tua testa:yup:
Codice sorgente - presumibilmente Plain Text

  1. action="http://www.google.com"


PM Quote
Avatar
perillitommaso (Normal User)
Pro


Messaggi: 186
Iscritto: 28/01/2014

Segnala al moderatore
Postato alle 19:29
Martedì, 04/11/2014
non l'ho copiato, l'ho fatto io, ho già provato a levare action ecc ma comunque la somma non me la fa!

PM Quote
Avatar
Bonny (Member)
Expert


Messaggi: 437
Iscritto: 24/04/2009

Segnala al moderatore
Postato alle 15:22
Mercoledì, 05/11/2014
Elenco accorgimenti:

1) dentro la func somma la variabile s non è dichiarata correttamente (var s = ....)
2) quando prelevi il valore delle text per fare la somma dovresti prima castare a int,
     altrimenti se una vale "2" e l'altra "6" la somma sarà "2" + "6" = "26", perchè viene effettuata la concatenazione di stringhe
3) tag input di tipo "txt" non esistono (esiste "text")

Consiglio una lettura introduttiva al linguaggio html, javascript. Basta la classica guida di html.it

PM Quote
Avatar
perillitommaso (Normal User)
Pro


Messaggi: 186
Iscritto: 28/01/2014

Segnala al moderatore
Postato alle 10:50
Sabato, 08/11/2014
Codice sorgente - presumibilmente Javascript

  1. <html>
  2. <head>
  3. <title>Somma tra addendi</title>
  4. <script>
  5. function Somma(){
  6.  int b = document.modulo.addendo2.value;
  7.  int a = document.modulo.addendo1.value;
  8.   s = a+b;
  9.         document.modulo.somma.value = s;
  10.         return true;
  11.         }
  12. </script>
  13. </head>
  14. <body>
  15. <form name="modulo" method="get" action="http://www.google.com" onSubmit="return(Somma())">
  16. <input type="text" name="addendo1">primo addendo<br>
  17. <input type="text" name="addendo2">secondo addendo<br>
  18. <input type="submit" name="go" value="Fai la somma"><br>
  19. <input type="text" name="Somma">Risultato<br>
  20.  
  21. </form>
  22.  
  23. </body>
  24. </html>


ho provato a fare così ma comunque non mi esce la somma, per tua informazione non c'è bisogno di dichiarare le variabili, viene fatto solo per una questione di ordinamento del codice. l'input type txt esiste .-. :k:

PM Quote
Avatar
perillitommaso (Normal User)
Pro


Messaggi: 186
Iscritto: 28/01/2014

Segnala al moderatore
Postato alle 12:47
Domenica, 09/11/2014
...

PM Quote
Avatar
Bonny (Member)
Expert


Messaggi: 437
Iscritto: 24/04/2009

Segnala al moderatore
Postato alle 9:06
Lunedì, 10/11/2014
Se lo dici tu :k:

PM Quote
Avatar
tasx (Dev Team)
Expert


Messaggi: 439
Iscritto: 15/12/2008

Segnala al moderatore
Postato alle 11:04
Lunedì, 10/11/2014
Ciao,

1) Ascolta sempre i consigli degli altri soprattutto quando scrivi in un forum per chiedere aiuto
2) In javascript non puoi dichiarare le variabili per tipo, ma devi usare la parola chiave "var"(il tipo viene risolto automaticamente)
    quindi la riga 6 e 7 sono errate
3) Bonny ti consigliava di "castare" i valori degli input, puoi usare le funzione parseInt e parseFloat
4) Bonny (di nuovo ;) ) ti consigliava di dichiarare la variabile "s" con il "var", questo non perchè dichiarare una variabile senza la parola chiave "var" sia sbagliato(infatti funziona comunque) ma perchè è una pratica molto pericolosa, infatti quando dichiari la variabile senza il "var" lo scope della variabile diventa quello globale quindi diventa accessibile anche all'esterno della funzione e rischi di cambiare valore ad una variabile con lo stesso nome(però contenuta in un'altra funzione). Quindi è buona cosa dichiarare le variabili sempre con il "var" in modo che restino nel giusto scope.

qui hai un esempio funzionante: http://jsfiddle.net/ncqgaq69/

PM Quote
Avatar
perillitommaso (Normal User)
Pro


Messaggi: 186
Iscritto: 28/01/2014

Segnala al moderatore
Postato alle 16:10
Lunedì, 10/11/2014
va bene grazie :)

PM Quote