Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Kilin
    Registrato dal
    Mar 2003
    Messaggi
    453

    somma algebrica del valore di due input

    ciao a tutti...

    ho fatto questo script, mi serve che cliccando sul tasto nell'input chiamato tot sia mostrata la somma dei valori numerici presenti in primo e secondo...

    così com'è però lo script non fa la somma...

    se scrivo 1 nell'input primo e 2 nel secondo restituisce 12..

    come faccio a fargli fare la somma algebrica?

    inoltre vorrei togliere il tasto calcola e far si che la somma venga calcolata automaticamente non appena inserisco un valore in uno dei due input...come posso fare?
    grazie!

    codice:
    <script>
    function Calcola(risultato) { 
    document.modulo.tot.value+=risultato; 
    } 
    </script>
    
    
    <form name=modulo>
    
    
    
    <input type="text" name="primo" size="20"></p>
    
    
    
    <input type="text" name="secondo" size="20"></p>
    
    
    <input type="text" name="tot" size="20"></p>
    
    
    <input onClick="Calcola(document.modulo.primo.value + document.modulo.secondo.value);" type="button" value="Pulsante" name="B1"></p>
    
    </form>

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    devi convertire i dati letti dagli input con la funzione parseInt() (o parseFloat() se sono numeri non interi) prima di fare la somma, altrimenti ottieni solo la concatenazione di stringhe

    Calcola(parseInt(document.modulo.primo.value,10) + parseInt(document.modulo.secondo.value,10));

    (Inoltre ricorda che gli eventi vanno scritti preferibilmente in minuscolo: onclick e non onClick)


    Ciao
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Utente di HTML.it L'avatar di Kilin
    Registrato dal
    Mar 2003
    Messaggi
    453
    dunque dunque... ci sto riuscendo.. ho fatto questo script:

    codice:
    <script>
    function Calcola(primo,secondo) { 
    var risultato;
    var primonum;
    var secondonum;
    primonum = parseInt(primo,10);
    secondonum = parseInt(secondo,10);
    
    
    risultato = primonum + secondonum;
    document.modulo.tot.value=risultato; 
    } 
    </script>
    
    
    <form name=modulo>
    
    
    
    <input onkeyup="Calcola(document.modulo.primo.value,document.modulo.secondo.value);" type="text" name="primo" size="20"></p>
    
    
    
    <input onkeyup="Calcola(document.modulo.primo.value,document.modulo.secondo.value);"  type="text" name="secondo" size="20"></p>
    
    
    <input  type="text" name="tot" size="20"></p>
    
    </form>
    funziona bene, ha un solo difetto: se riempo solo uno dei due input nell'input risultato ottengo la scritta NaN... come posso ovviare a questo? Perchè se uno dei due addendi è nullo la somma restituita è NaN?

    grazie!

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    cambia queste due righe

    primonum = parseInt(primo,10);
    secondonum = parseInt(secondo,10);


    in

    primonum = (isNaN(primo))? 0 : parseInt(primo,10);
    secondonum = (isNaN(secondo))? 0 : parseInt(secondo,10);


    Ciao
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Utente di HTML.it L'avatar di Kilin
    Registrato dal
    Mar 2003
    Messaggi
    453
    mi puoi spiegare la sintassi? cioè forse ho capito... dimmi se è così...

    primonum = (se primo vale NaN allora primo = 0: altrimenti parseint(primo,10);

  6. #6
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    esatto, il costrutto in questione si chiama "if ternario"
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  7. #7
    Utente di HTML.it L'avatar di Kilin
    Registrato dal
    Mar 2003
    Messaggi
    453
    mi dava lo stesso errore con le righe corrette come dici te... però ho risolto così, ora funziona!

    codice:
    <script>
    function Calcola(primo,secondo) { 
    var risultato;
    var primonum;
    var secondonum;
    
    primonum = parseInt(primo,10);
    secondonum = parseInt(secondo,10);
    
    if(isNaN(primonum)){
    primonum = 0;
    }
    
    if(isNaN(secondonum)){
    secondonum = 0;
    }
    
    risultato = primonum + secondonum;
    document.modulo.tot.value=risultato; 
    } 
    </script>

    grazie!

  8. #8
    Utente di HTML.it L'avatar di Kilin
    Registrato dal
    Mar 2003
    Messaggi
    453
    scusate, un altro problemino.. dovrei far si che se viene spuntata una checkbox il prezzo venga aumentato di 1... ho provato così:

    ho aggiunto alle variabili questo:

    codice:
    var myCheck = document.getElementById('logocheck').checked;
    e poi dove viene calcolato il risultato:
    codice:
    if(myCheck){
    risultato = cartoncinonum + canapanum + telanum + similpellenum + similpellescrittanum + 1;
    
    }else{
    risultato = cartoncinonum + canapanum + telanum + similpellenum + similpellescrittanum;
    }
    la checkbox è questa:

    codice:
    <input type="checkbox" name="logo" id="logocheck" value="ON">
    purtroppo però non funziona... mi sapete dire dove sbaglio?

  9. #9
    Utente di HTML.it L'avatar di Kilin
    Registrato dal
    Mar 2003
    Messaggi
    453
    allora, ho trovato un altro metodo che mi permetta di considerare l'ipotesi in cui un utente ripensi alla scelta fatta e deselezioni la checkbox... ecco la funzione:

    codice:
    function logo(num) {
    
    
      if(num == 1){
      
        document.modulo.tot.value = parseInt(document.modulo.tot.value+1);
      }else if (num == 2){
     document.modulo.tot.value = parseInt(document.modulo.tot.value-1);
    
      }
      
      
      }
    che viene richiamata tramite:

    codice:
    <input type="checkbox" onclick="this.name=this.name=='1'?'2':'1';logo(this.name);" name="C1">
    ora: quello che ottengo è che non viene sommato l'uno se si clicca sulla checkbox, viene aggiunto solo uno di seguito alla cifra.. se la deseleziono l'uno viene sottratto e rimane uno 0 infondo alla cifra precedente.. come posso sistemare? come vedi ho provato a usare la funzione parseInt ma evidentemente ne ho fatto un uso scorretto...

    grazie!

  10. #10
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    il +1 e -1 vanno fuori dal parseInt altrimenti fai una concatenazione prima di convertire la stringa, cioè

    parseInt(document.modulo.tot.value) + 1;
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.