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 [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135

    Somme sballate in javascript

    Buon pomeriggio a tutti.

    Ho scritto questa paginetta in htm con del codice javascript :

    codice:
    <script language="javascript" type="text/javascript">
    <!--
    
    function parseNumber(val)
    {
      val = parseFloat(val);
      if (isNaN(val)) return(0.0);
     
      return(val);
    }
    
    var idList = [630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646];
    
    function calcola(frmObj, id)
    {
                                               
      var sum1 = 0.0, sum2 = 0.0;
     
      for ( var n = 0 ; n < idList.length ; n++ )
        {
          sum1 += parseNumber(frmObj["BANCO-" + idList[n]].value);
          sum2 += parseNumber(frmObj["TAVOLI-" + idList[n]].value);
        }
     
      frmObj["TOT_BANCO-" + idList[0]].value = sum1.toFixed(2);
      frmObj["TOT_TAVOLI-" + idList[0]].value = sum2.toFixed(2);
    }
    
    // -->
    </script>		
    
          <td><input type="text" name="BANCO-630" size="5" value="33,18" onkeyup="calcola(this.form, 630)"></td>    
          <td><input type="text" name="TAVOLI-630" size="5" value="128,73" onkeyup="calcola(this.form, 630)"></td> 
          <td><input type="text" name="TOT_BANCO-630" size="5" value="902,63" readonly></td>
          <td><input type="text" name="TOT_TAVOLI-630" size="5" value="1961,92" readonly></td>
    
          <td><input type="text" name="BANCO-631" size="5" value="0" onkeyup="calcola(this.form, 631)"></td>    
          <td><input type="text" name="TAVOLI-631" size="5" value="6,5" onkeyup="calcola(this.form, 631)"></td> 
          <td><input type="text" name="TOT_BANCO-631" size="5" value="0" readonly></td>
          <td><input type="text" name="TOT_TAVOLI-631" size="5" value="0" readonly></td>

    In sostanza vorrei che TOT_BANCO-630 si aggiornasse riportando la nuova somma quando cambio il valore di BANCO-630 e/o BANCO-631.

    Così come dovrebbe aggiornarsi TOT_TAVOLI-630 riportando la nuova somma quando cambio il valore di TAVOLI-630 e/o TAVOLI-631.

    Lo script non restituisce errori ma le nuove somme sono sballate.

    La pagina è pubblicata qui di seguito:
    http://www.episunneo.net/venduto.htm

    Grazie a chi troverà una soluzione.
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  2. #2
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    up
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  3. #3
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Da una verifica veloce funziona bene se inserisci gli importi con il . (il punto) anziché la , (la virgola) per essere sicuro basta fare un replace prima della somma.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  4. #4
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Originariamente inviato da cavicchiandrea
    Da una verifica veloce funziona bene se inserisci gli importi con il . (il punto) anziché la , (la virgola) per essere sicuro basta fare un replace prima della somma.
    Grazie Andrea, ma non funziona.

    Prova ad inserire valore 10 nella colonna Banco -riga aperitivi:

    totale banco = 416.78
    totale tavoli = 1134.49

    mi aspetto:

    totale banco = 426.78
    totale tavoli = 1134.49

    invece mi ritrovo con:

    totale banco = 424.00
    totale tavoli = 1124.00

    Non va bene....
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non so cosa dirti ma ti confermo con IE 6 se metti il punto al posto della virgola il conto è corretto
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Originariamente inviato da cavicchiandrea
    Non so cosa dirti ma ti confermo con IE 6 se metti il punto al posto della virgola il conto è corretto
    Scusa Andrea ho fatto alcune modifiche allo script originale:
    http://www.episunneo.net/venduto.htm

    Puoi provare per favore a modificare la riga numero quattro:

    BANCO = 3
    TAVOLI = 3
    TOTALE SENZA IVA = 1162.37 ???? è sbagliato

    BANCO = 3.3
    TAVOLI = 3.3
    TOTALE SENZA IVA = 1155.10 !!!! è giusto

    Perchè si comporta così ???
    Grazie x l'aiuto.
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  7. #7
    Guarda, a me pare che il problema sia nell'aggiornamento e non nelle somme

    mi spiego

    ho messo dappertutto zeri

    ho messo solo un 2 in una cella

    Poi metto un due anche in un'altra cella

    le colonne "banco totale" e "totale tavoli" si aggiornano correttamente

    invece le colonne "totale senza iva " e "totale con iva" si aggiornano solo quando inserisco un nuovo valore

    sembrano "indietro" di un inserimento, non so se mi spiego

    Se ho tempo do un occhio al codice

  8. #8
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Grazie è proprio così !
    Speriamo tu abbia del tempo da dedicargli...
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  9. #9
    scusa, ma forse non ho capito bene cosa deve fare il tuo script.

    ma qua

    sum3 += parseNumber(frmObj["TOT_BANCO-" + idList[n]].value) +
    parseNumber(frmObj["TOT_TAVOLI-" + idList[n]].value);

    tu fai una somma di due totali, prima ancora che essi vengano aggiornati

    Se tu vuoi semplicemente che la prima riga contenga la somma di tutti i valori basta questa semplice modifica:
    codice:
    function calcola(frmObj, id)
    {
                                               
      var sum1 = 0.0, sum2 = 0.0, sum3 = 0.0;
     
      for ( var n = 0 ; n < idList.length ; n++ )
      
        {
        
          sum1 += parseNumber(frmObj["BANCO-" + idList[n]].value);
          sum2 += parseNumber(frmObj["TAVOLI-" + idList[n]].value);
                
            
          
        }
      frmObj["TOT_BANCO-" + idList[0]].value = sum1.toFixed(2);
      frmObj["TOT_TAVOLI-" + idList[0]].value = sum2.toFixed(2);
      sum3 = sum1 + sum2;        
      frmObj["TOT_SENZA_IVA-" + idList[0]].value = sum3.toFixed(2);
       
      var vl = frmObj["TOT_CON_IVA-" + idList[0]].value = sum3.toFixed(2) * 0.1 +
                                                          parseNumber(frmObj["TOT_SENZA_IVA-" + idList[0]].value);
    
      frmObj["TOT_CON_IVA-" + idList[0]].value = vl.toFixed(3);                                                      
    
    
    }
    Poi mi spieghi pero' cosa servono tutte quelle celle piene di zeri nelle colonne del totale

  10. #10
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Bravo !!!

    Hai risolto il problema ! Complimenti !

    Guarda se così va bene ( ho anche tolto tutte celle piene di zeri nelle colonne del totale ):
    http://www.episunneo.net/venduto.htm

    Mille grazie
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

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.