Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    Errore in function "startCalc"

    ciao a tutti,

    qualcuno sa dirmi dov'é l'errore nello script, che io non lo trovo ...

    Ho un form nel quale il risultato "TOTALEGENERALE3" é dato (o meglio dovrebbe ... dato che non mi funziona ..) dalla sottrazione tra due campi (TOTALE_GENERALE e TOTALE1_GENERALE1) questi ultimi due campi sono a loro volta delle somme di una serie di funzioni matematiche (moltiplicazioni e addizioni e percentuali)

    nell'Head ho la funzione:
    ......
    //costruiamo la formula 3
    function startCalc(){
    interval = setInterval ("calc()",1);
    }
    function calc(){
    var C1 = parseInt(form.acquisto_caf.TOTALE_GENERALE.value);
    var C2 = parseInt(form.acquisto_caf.TOTALE1_GENERALE1.value );
    form.acquisto_caf.TOTALEGENERALE3.value = (C1-C2);
    }


    nel body ho quanto segue:

    <tr>
    <td class="cella_sx" nowrap="nowrap" width="50%">TOTALE A DEBITO:</td>
    <td class="cella_dx" noWrap>Euro:<INPUT class=text style="text-align:right;" maxLength=12 size=12 value="" name="TOTALE_GENERALE" onChange="startCalc();" readonly="readonly"></td></tr>
    <tr>
    <td class="cella_sx" nowrap="nowrap" width="50%">TOTALE A CREDITO:</td>
    <td class="cella_dx" noWrap>Euro:<INPUT class=text style="text-align:right;" maxLength=12 size=12 value="" name="TOTALE1_GENERALE1" onChange="startCalc();" readonly="readonly"></td></tr>
    <tr>
    <td class="cella_unita" colspan="2"> ------------------------------------------------------------------------------------------------------------------------------------------------</td></tr>

    <tr>
    <td class="cella_sx" nowrap="nowrap" width="50%">TOTALE DA VERSARE (O DA RIPORTARE A CREDITO):</td>
    <td class="cella_dx" noWrap>Euro:<INPUT class=text style="text-align:right;" maxLength=12 size=12 value="" name="TOTALEGENERALE3" readonly="readonly"></td></tr>
    <tr>


    le ho provate tutte ormai, ma niente da fare ...

    Qualche idea? :master:

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    form.acquisto_caf.TOTALE_GENERALE.value

    Non capisco cosa ci stia a fare... dovrebbe esserci scritto document :master:
    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

  3. #3
    ho sostituito form con document ma non mi cambia assolutamente niente,
    il campo TOTALEGENERALE3 resta vuoto ...

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Quella riga era d'esempio... lo hai sostituito anche nelle altre?

    ciao
    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

  5. #5
    in quali altre? l'unico campo che non funziona é proprio il campo "TOTALEGENERALE3"
    tutto il resto del form funziona (quasi) perfettamente ....

    questo é il form completo:

    www.civites.it/prove/acquista_trasmissioni_caf.html

    Come vedi, TUTTI i campi si aggiornano,in maniera più o meno corretta, se si esclude la mancanza dei decimali in alcuni campi e l'arrotondamento a numero intero nei campi "TOTALE_GENERALE" (-->Totale a debito) e "TOTALE1_GENERALE1" (--> Totale a credito)

    L'unico campo che non vuole saperne di funzionare é appunto "TOTALEGENERALE3" ( --> Totale da versare ...)

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da br1
    Quella riga era d'esempio... lo hai sostituito anche nelle altre?
    Questo direttamente dalla tua pagina:

    function calc(){
    var C1 = parseInt(form.acquisto_caf.TOTALE_GENERALE.value);
    var C2 = parseInt(form.acquisto_caf.TOTALE1_GENERALE1.value);
    document.acquisto_caf.TOTALEGENERALE3.value = "ciao" //(C1-C2);
    }


    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

  7. #7
    ma non cambia assolutamente nulla, ho sostituito anche quei due "form" con "document" ma ciò non fà funzionare il campo TOTALEGENERALE3, che non si schioda

  8. #8
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    La funzione startCalc() non viene richiamata... l'evento onchange non viene provocato da un cambiamento dei campi mediante scripting.

    Mettilo alla fine delle altre funzioni che provvedono a variare i totali parziali... ma devi anche gestire la possibilita' che uno dei parziali sia vuoto.

    Ho passato diversi minuti a modificare il nome di variabile "form" di cui fai largo uso... tieni presente che usare nomi riservati puo' esporti a diversi malfunzionamenti ed errori.

    ciao
    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

  9. #9
    Intanto grazie per le risposte e per il tempo che mi hai dedicato.

    Ora veniamo al punto:
    ho seguito il Tuo consiglio e ho sostituito la parola form con document da tutte le parti, ma ... é stato un disastro, perché in qyuel caso non funziona più nulla.

    Quindi sono tornato a rimettere la parola form e tutto é tornato a funzionare ... o almeno quasi.

    Poi ho seguito il Tuo consiglio mettendo -> onChange="startCalc();" <- sulle voci delle somme intermedie. Adesso qualcosa si muove ma il funzionamento é erratico, va e non va... sembra quasi che ci siano troppi "on...."

    Stò pensando di mettere una qualche funzione intermedia apposita solo per far partire il "onChange...

    Che ne pensi?

  10. #10
    codice:
    <html>
    <HEAD>
    <SCRIPT LANGUAGE="JavaScript">
    //costruiamo la formula 3
    function startCalc(){
    interval = setInterval ("calc()",1);
    }
    function calc(){
    var C1 = isNaN(parseInt(document.getElementById("TOTALE_GENERALE").value))?0:parseInt(document.getElementById("TOTALE_GENERALE").value);
    var C2 = isNaN(parseInt(document.getElementById("TOTALE1_GENERALE1").value))?0:parseInt(document.getElementById("TOTALE1_GENERALE1").value);
    document.getElementById("TOTALEGENERALE3").value = (C1-C2);
    }
    
    </script>
    </head>
    <body>
    <table>
    <tr>
    <td class="cella_sx" nowrap="nowrap" width="50%">TOTALE A DEBITO: </td>
    <td class="cella_dx" noWrap> Euro:  <INPUT class=text style="text-align:right;" maxLength=12 size=12 value="" name="TOTALE_GENERALE" id="TOTALE_GENERALE" onChange="startCalc();" ></td></tr>
    <tr>
    <td class="cella_sx" nowrap="nowrap" width="50%">TOTALE A CREDITO: </td>
    <td class="cella_dx" noWrap> Euro:  <INPUT class=text style="text-align:right;" maxLength=12 size=12 value="" name="TOTALE1_GENERALE1" id="TOTALE1_GENERALE1" onChange="startCalc();" ></td></tr>
    <tr>
    <td class="cella_unita" colspan="2"> ------------------------------------------------------------------------------------------------------------------------------------------------</td></tr>
    
    <tr>
    <td class="cella_sx" nowrap="nowrap" width="50%">TOTALE DA VERSARE (O DA RIPORTARE A CREDITO): </td>
    <td class="cella_dx" noWrap> Euro:  <INPUT class=text style="text-align:right;" maxLength=12 size=12 value="" name="TOTALEGENERALE3" id="TOTALEGENERALE3" readonly="readonly"></td></tr>
    <tr>
    </table>
    </body>
    </html>
    prendendo il codice che hai postato ho fatto qualche modifica e così funziona (ho tolto la proprietà readonly ai due campi solo per fare delle prove)

    Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare

    www.netpolaris.it

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 © 2026 vBulletin Solutions, Inc. All rights reserved.