Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Errore su addizione con javascript

    Ciao Ragazzi,
    ho cercato di scrivere una sintassi in javscript che mi permettesse di eseguire l'addizione di numeri contenuti all'interno di alcune textarea del mio form cercando di equiparare a zero i campi in cui non fosse stato inserito alcun numero... ed ecco cosa ho scritto:

    codice:
    function addition()
    {
    
       var number1, number2, number3, result;
    
        number1 = (isNaN(txtNumber1))? 0 : parseFloat(document.form1.txtNumber1.value);
        number2 = (isNaN(txtNumber2))? 0 : parseFloat(document.form1.txtNumber2.value);
    	number3 = (isNaN(txtNumber3))? 0 : parseFloat(document.form1.txtNumber3.value);
        result =(number1 + number2 + number3);
    
        document.form1.txtResult.value=result;
    }

    Però, manco a dirlo, non funziona infatti nel campo result, in cui dovrebbe essere visualizzato il risultato della somma, mi viene sempre fuori zero. Sapete aiutarmi?

  2. #2
    quando fai l'addizione prova a moltiplicarla per 1 io ho risolto molte volte in questo modo ciao a presto e spero di esserti stato d'aiuto

  3. #3
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    txtNumber1 2 e 3 come li istanzi?

  4. #4
    Beh le istanze sono numeri nel caso di virgole gli dò il punto, tipo: 12.2

  5. #5
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    ma come li istanzi? nello script non ci sono

  6. #6
    Ops scusami, non avevo capito bene. Ti passo tutto lo script, completo, in realtà l'addizione è solo parte di uno script che segue anche alcune divisioni partendo da valori inseriti all'interno dello stesso campo.

    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Documento senza titolo</title>
    <script language = "Javascript">
    
    
    function taLimit() {
    	var taObj=event.srcElement;
    	if (taObj.value.length==taObj.maxLength*1) return false;
    }
    
    function taCount(visCnt) { 
    	var taObj=event.srcElement;
    	if (taObj.value.length>taObj.maxLength*1) taObj.value=taObj.value.substring(0,taObj.maxLength*1);
    	if (visCnt) visCnt.innerText=taObj.maxLength-taObj.value.length;
    }
    
    function division1()
    {
        var div1, div2, resultwe;
    
        div1 = parseFloat(document.form1.divis1.value);
        div2 = parseFloat(document.form1.divisore.value);
        resultwe = div1 / div2;
    
        document.form1.txtNumber1.value = resultwe;
    }
    
    function division2()
    {
        var div3, div4, resultwr;
    
        div3 = parseFloat(document.form1.divis2.value);
        div4 = parseFloat(document.form1.divisore.value);
        resultwr = div3 / div4;
    
        document.form1.txtNumber2.value = resultwr;
    }
    
    function division3()
    {
        var div5, div6, resultqw;
    
        div3 = parseFloat(document.form1.divis3.value);
        div4 = parseFloat(document.form1.divisore.value);
        resultqw = div3 / div4;
    
        document.form1.txtNumber3.value = resultqw;
    }
    
    
    function addition()
    {
    
       var number1, number2, number3, result;
    
        number1 = (isNaN(txtNumber1))? 0 : parseFloat(document.form1.txtNumber1.value);
        number2 = (isNaN(txtNumber2))? 0 : parseFloat(document.form1.txtNumber2.value);
    	number3 = (isNaN(txtNumber3))? 0 : parseFloat(document.form1.txtNumber3.value);
        result =(number1 + number2 + number3);
    
        document.form1.txtResult.value=result;
    }
    
    function addition2()
    {
        var number4, number5, number6, resultz;
    
        number4 = (isNaN(divis1))? 0 : parseFloat(document.form1.divis1.value);
        number5 = (isNaN(divis2))? 0 : parseFloat(document.form1.divis2.value);
    	number6 = (isNaN(divis3))? 0 : parseFloat(document.form1.divis3.value);
        resultz =(number4 + number5 + number6);
    
        document.form1.txtResultz.value=resultz;
    }
    </script>
    </head>
    
    <body>
    <form id="form1" name="form1" method="post" action="">
      <table width="300" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td width="100" height="30"></td>
          <td width="100" height="30"><div align="center">Divisore</div></td>
          <td width="100" height="30"><div align="center">
            <input name="divisore" type="text"    id="divisore"  size="8" />
          </div></td>
        </tr>
        <tr>
          <td width="100" height="30"><div align="center">1&deg; Numero </div></td>
          <td width="100" height="30">
            <div align="center">
              <input name="divis1" type="text"    id="divis1" onkeyup="division1();addition2()" size="8" />
          </div></td>
          <td width="100" height="30"><div align="center">
            <input name="txtNumber1" type="text"    id="txtNumber1" onchange="addition()" size="8" />
          </div></td>
        </tr>
        <tr>
          <td width="100" height="30"><div align="center">2&deg; Numero </div></td>
          <td width="100" height="30">
            <div align="center">
              <input name="divis2" type="text"    id="divis2" onkeyup="division2();addition2()" size="8" />
          </div></td>
          <td width="100" height="30"><div align="center">
            <input name="txtNumber2" type="text"    id="txtNumber2" onchange="addition()" size="8" />
          </div></td>
        </tr>
        <tr>
          <td width="100" height="30"><div align="center">3&deg; Numero </div></td>
          <td width="100" height="30">
            <div align="center">
              <input name="divis3" type="text"    id="divis3" onkeyup="division3();addition2()" size="8" />
          </div></td>
          <td width="100" height="30"><div align="center">
            <input name="txtNumber3" type="text"    id="txtNumber3" onchange="addition()" size="8" />
          </div></td>
        </tr>
        <tr>
          <td width="100" height="30"><div align="center">Risultati</div></td>
          <td width="100" height="30">
            <div align="center">
              <input name="txtResultz" type="text"    id="txtResultz"  size="8" />
          </div></td>
          <td width="100" height="30"><div align="center">
            <input name="txtResult" type="text"    id="txtResult"  size="8" />
          </div></td>
        </tr>
        <tr>
          <td width="100" height="30"></td>
          <td width="100" height="30"><div align="center"></div></td>
          <td width="100" height="30"><div align="center"></div></td>
        </tr>
      </table>
    </form>
    </body>
    </html>

  7. #7
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    ok non li crei
    prima del isNaN devi fare
    var txtNumber1 = document.form1.txtNumber1.value;
    var txtNumber2 = ...
    var txtNumber3 = ...

  8. #8
    Ciao floyd,
    innanzitutto grazie dell'aiuto, ho scritto come mi dicevi, ma purtroppo però se nelle funzioni delle addizioni continuo a saltare un campo questo non viene ancora considerato come nullo ma continuo ad avere come risultato zero. Ti riporto lo script modificato in base alle tue indicazioni.

    codice:
    <script language = "Javascript">
    
    
    function taLimit() {
    	var taObj=event.srcElement;
    	if (taObj.value.length==taObj.maxLength*1) return false;
    }
    
    function taCount(visCnt) { 
    	var taObj=event.srcElement;
    	if (taObj.value.length>taObj.maxLength*1) taObj.value=taObj.value.substring(0,taObj.maxLength*1);
    	if (visCnt) visCnt.innerText=taObj.maxLength-taObj.value.length;
    }
    
    function division1()
    {
        var div1, div2, resultwe;
    
        div1 = parseFloat(document.form1.divis1.value);
        div2 = parseFloat(document.form1.divisore.value);
        resultwe = div1 / div2;
    
        document.form1.txtNumber1.value = resultwe;
    }
    
    function division2()
    {
        var div3, div4, resultwr;
    
        div3 = parseFloat(document.form1.divis2.value);
        div4 = parseFloat(document.form1.divisore.value);
        resultwr = div3 / div4;
    
        document.form1.txtNumber2.value = resultwr;
    }
    
    function division3()
    {
        var div5, div6, resultqw;
    
        div3 = parseFloat(document.form1.divis3.value);
        div4 = parseFloat(document.form1.divisore.value);
        resultqw = div3 / div4;
    
        document.form1.txtNumber3.value = resultqw;
    }
    
    
    function addition()
    {
    
       var number1, number2, number3, result;
    	
    	var txtNumber1 = document.form1.txtNumber1.value;
    	var txtNumber2 = document.form1.txtNumber2.value;
    	var txtNumber3 = document.form1.txtNumber3.value;
    	
        number1 = (isNaN(txtNumber1))? 0 : parseFloat(document.form1.txtNumber1.value);
        number2 = (isNaN(txtNumber2))? 0 : parseFloat(document.form1.txtNumber2.value);
    	number3 = (isNaN(txtNumber3))? 0 : parseFloat(document.form1.txtNumber3.value);
        result =(number1 + number2 + number3);
    
        document.form1.txtResult.value=result;
    }
    
    function addition2()
    {
        var number4, number5, number6, resultz;
    	
    	var divis1 = document.form1.divis1.value;
    	var divis2 = document.form1.divis2.value;
    	var divis3 = document.form1.divis3.value;
    
        number4 = (isNaN(divis1))? 0 : parseFloat(document.form1.divis1.value);
        number5 = (isNaN(divis2))? 0 : parseFloat(document.form1.divis2.value);
    	number6 = (isNaN(divis3))? 0 : parseFloat(document.form1.divis3.value);
        resultz =(number4 + number5 + number6);
    
        document.form1.txtResultz.value=resultz;
    }
    </script>

  9. #9
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Usa dappertutto:

    variabile = parseFloat("0"+document.nomeForm.nomeCampo.value);

    ciao

    ps: attento alle divisioni per zero VVoVe:
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

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.