Visualizzazione dei risultati da 1 a 4 su 4

Discussione: somma di variabili

  1. #1

    somma di variabili

    salve gente. Inizio subito a presentarmi..Mi chiamo Marco e ho 21 anni, nella vita reale oltre a studiare mi diletto a fare qualche sito web.

    Espongo subito il mio problema:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Calcolo Onorario</title>
    <style type="text/css" media="all">
    body, html { background: none; font-family: Verdana, Geneva, sans-serif; font-size: 14px; text-align:left; }
    #wrapper { width: 650px; margin-left: auto; margin-right: auto; }
    h1 { text-align: center; margin-left: auto; margin-right: auto; font-weight:normal; font-size: 14px; }
    h1 b { font-weight: bold }
    #today { margin-left: 0; margin-top: 50px; }
    #destinatario { margin-left: 500px; margin-top: 5px; }
    #destinatario .ins { margin-top: 15px; margin-left: 0; width: 200px; }
    #oggetto { margin-left: 0; margin-top:40px; }
    #form { margin-left: 0; margin-top: 80px; }
    #form td { border-bottom:solid 1px #000; }
    #soldi { text-align: right; }
    #footer { margin-left:0; margin-top: 60px; }
    </style>

    <script type="text/javascript">
    //Creo una funzione per il memorizzamento dei dati in variabili
    function scriviDati() {
    progressivo=prompt("Inserire il progressivo");
    data=prompt("Inserire la data nel formato gg/mm/aaaa");
    nome=prompt("Inserisci il Nome e Cognome");
    indirizzo=prompt("Inserire l'indirizzo di residenza");
    paese=prompt("Inserire il paese comprensivo di CAP e Provincia");
    cf=prompt("Inserire la Partita IVA");
    oggetto=prompt("Inserire l'oggetto");
    parcella=prompt("Inserire la parcella");
    spese=prompt("Inserire le spese");
    }

    //visualizzo un prompt per l'inserimento delle variabili
    scriviDati();

    //specifico che le varibili "parcella" e "spese" sono dei numeri a virgola mobile
    parseFloat(parcella);
    parseFloat(spese);

    //Eseguo i calcoli partendo dalla parcella e dalle spese
    onorario= parcella * 1.2 - spese;
    cnpaap= onorario * 0.04;
    ritenuta= onorario * 0.2;
    subtotale= onorario + spese + cnpaap;
    totale= subtotale-ritenuta;

    //Assegno un valore numerico alle variabili finora utilizzate
    var par= new Number(parcella);
    var tot= new Number(totale);
    var spe= new Number(spese);
    var subtot= new Number(subtotale);
    var ono= new Number(onorario);
    var cpa= new Number(cnpaap);
    var rit= new Number(ritenuta);
    </script>
    </head>
    <body>
    <div id="wrapper">
    <h1>Studio Legale Salvatore Tamburo

    Avvocato


    Piazza Francesco Bellipanni n°32

    90015 Cefal&ugrave; (PA)

    P.IVA 04791350822</h1>
    <div id="today">Cefal&ugrave; l&igrave;, <SCRIPT TYPE="text/javascript"> document.write(data);</SCRIPT></div>
    <div id="today" style="margin-top:60px;">Fatt. n. <SCRIPT TYPE="text/javascript"> document.write(progressivo);</SCRIPT>
    </div>
    <div id="destinatario">Spett.le
    <div id="destinatario" class="ins">
    <SCRIPT TYPE="text/javascript">
    document.write(nome+"
    "+indirizzo+"
    "+paese+"
    "+cf);
    </SCRIPT>
    </div>
    </div>
    <div id="oggetto">Oggetto: <SCRIPT TYPE="text/javascript">document.write(oggetto);</SCRIPT></div>
    <div id="form"><table width="100%" border="0">
    <tr>
    <td>Onorari e diritti</td>
    <td id="soldi">€ <SCRIPT TYPE="text/javascript">document.write(ono.toFixed(2));</SCRIPT></td>
    </tr>
    <tr>
    <td>Spese (Racc., Messa a ruolo, etc.)</td>
    <td id="soldi">€ <SCRIPT TYPE="text/javascript">document.write(spe.toFixed(2));</SCRIPT></td>
    </tr>
    <tr>
    <td>CNPAAP 4%</td>
    <td id="soldi">€ <SCRIPT TYPE="text/javascript">document.write(cpa.toFixed(2));</SCRIPT></td>
    </tr>
    <tr>
    <td>TOTALE</td>
    <td id="soldi">€ <SCRIPT TYPE="text/javascript">document.write(subtot.toFixed(2));</SCRIPT></td>
    </tr>
    <tr>
    <td style="border-bottom: none;"></td>
    <td style="border-bottom: none;"></td>
    </tr>
    <tr>
    <td>Ritenuta d'acconto</td>
    <td id="soldi">€ <SCRIPT TYPE="text/javascript">document.write(rit.toFixed(2));</SCRIPT></td>
    </tr>
    <tr>
    <td>TOTALE COMPLESSIVO</td>
    <td id="soldi">€ <SCRIPT TYPE="text/javascript">document.write(tot.toFixed(2));</SCRIPT></td>
    </tr>
    </table>

    </div>
    <div id="footer">Operazione effettuata ai sensi dell'art.1, comma 100, legge finanziaria 2008</div>
    </div>
    </body>
    </html>
    Questo il sorgente della pagina che mi sta alcuni grattacapi..

    In pratica si tratta di una semplice pagina in HTML che all'apertura richiede dei dati all'utente per poi formattarli ed eseguire delle operazioni. Nella prima versione della pagina tutto bene (http://grudge61.altervista.org/common/onorario.html), esegue i calcoli perfettamente arrivando al risultato richiesto. Il problema nasce nella seconda versione della pagina (http://grudge61.altervista.org/common/onorario2.html)..Come si può subito vedere, nel TOTALE e TOTALE COMPLESSIVO piuttosto che eseguire la somma dei numeri, li concatena. Ho inzialmente pensato al fatto che potesse vedere i valori di input come delle stringhe, ma nulla..Inoltre le altre operazioni le esegue correttamente, gli unici due errori stanno in questi due campi.

    Qualcuno ha idea su dove sta il problema? Riuscireste in caso a fornirmi la soluzione?

    Rimango in attesa di qualche anima pia che riesca a capire qualcosa di tutto questo casotto, nel frattempo ritorno a girovagare nel web tentando soluzioni su soluzioni.

    Grazie Mille, Marco aka grudge61

  2. #2
    Sembra una fesseria, ma avolte risolve:

    codice:
    subtotale= 1*onorario + 1*spese + 1*cnpaap;
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

  3. #3
    Cavolo! Funziona! Grazie mille! Stavo diventando scemo!

    Giusto per curiosità culturale..Potresti spiegare il motivo di tale "modifica"? Almeno la prossima volta che ricapita lo stesso errore, so identificarlo, dargli un nome e risolverlo al meglio..

  4. #4
    Secondo me si tratta della unica pecca di JavaScript: la promiscuità dell operatore +

    A seconda del contesto javascript lo usa come operatore aritmetico di addizione oppure come operatore stringa di concatenamento.

    Altri linguaggi usano simboli diversi, ad esempio php usa il punto come operatore stringa...

    Comunque, il moltiplicare una variabile per una costante numerica, eventualmente 1, forza javascript ad usare la addizione anzichè il concatenamento.
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

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.