Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Replace che non funge

  1. #1
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802

    Replace che non funge

    Ciao a tutti,
    ho una funzione che mi fa un calcolo di due variabili e mi restituisce il risutato in tempo reale. Ho bisogno di fargli un replace sostituendo nel risultato il punto con la virgola soltanto che non mi fa una mazza.

    In pratica:

    v1=2
    v2=5.42
    tot=10.84

    Io vorrei fare il replace del risultato finale in modo che diventi 10,84

    La funzione che utilizzo è questa:

    function checkcalcolo() {
    var v1=nuovoDato.qtaNuovo.value;
    var v2=nuovoDato.prezzocadNuovo.value.replace(",",".") ;
    if (v1!="" && v2!="") nuovoDato.prezzototNuovo.value=v1*v2;
    var t = nuovoDato.prezzototNuovo.value.replace(".",",");
    }

    Ma il risultato appare sempre col punto. Dove sta il problema? Di errori non ne vengono restituiti.

    Grazie 1000
    www.beppegrillo.it
    Il blog di Beppe!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    63
    <script>
    function checkcalcolo() {
    var v1 = nuovoDato.qtaNuovo.value;
    var v2 = nuovoDato.prezzocadNuovo.value;
    if(!v1.length || isNaN(v1)|| !v2.length || isNaN(v2))
    return alert("messaggio errore");
    v1 = parseFloat(v1);
    v2 = parseFloat(v2);
    var v3 = v1*v2;
    v3 = v3.toString().replace(/\./,",");
    nuovoDato.prezzototNuovo.value = v3;
    }

    </script>

    <form name="nuovoDato">
    <input type="text" name="qtaNuovo" value="20">
    <input type="text" name="prezzocadNuovo" value="34.56">
    <input type="text" name="prezzototNuovo">
    <input type="button" onclick="checkcalcolo()">
    </form>

    ciao
    javascript: tutto attaccato

  3. #3
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    ma scusa,

    if (v1!="" && v2!="") nuovoDato.prezzototNuovo.value=v1*v2;
    Questa riga fa la moltiplicazione del primo con il secondo dato se questi ultimi contengono numeri.


    var t = nuovoDato.prezzototNuovo.value.replace(".",",");
    Questo assegna alla variabile t il valore della moltiplicazione facendo direttamente il replace del carattere da sostiuire.

    Dove sta l'errore???
    www.beppegrillo.it
    Il blog di Beppe!!

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    63
    ...Questo assegna alla variabile t il valore della moltiplicazione facendo direttamente il replace del carattere da sostiuire.
    ti sei risposto da solo

    assegna quel valore alla variabile t, ma non al valore di nuovoDato.prezzototNuovo.

    quindi dovresti riassegnarlo

    nuovoDato.prezzototNuovo.value = t;

    javascript: tutto attaccato

  5. #5
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    Grazie, problema risolto.

    Ora ne sorge un altro:
    devo capire se un numero è decimale o intero, se decimale devo controllare che abba due cifre dopo la virgola mentre se intero devo aggiungergli la stringa ",00".

    Non ho trovato niente che mi restituisca il tipo di numero, se intero o decimale, come posso fare?

    Grazie
    www.beppegrillo.it
    Il blog di Beppe!!

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    63
    per sapere se il numero è decimale o meno basta che ne estrai l'intero e lo confronti con l'originale.

    ossia:

    if(n-parseInt(n)==0)alert('intero');

    oppure trattandolo come stringa, per vedere se contiene il punto

    if(!n.toString().Match(/\./))alert('intero');


    circa il modo di avere sempre due decimali eventualmente anche solo .00 ti posto uno spunto

    <script>

    function dueCifre(num){
    numStr = num.toString();
    var parts = numStr.split('.');
    if(!parts[1]) parts[1]='00';
    else if(parts[1].length<2)parts[1]+='0';
    else parts[1] = parts[1].substr(0,2);
    return parts.join('.');
    }

    alert(dueCifre(5435));
    alert(dueCifre(54.000035));
    alert(dueCifre(5.4035));
    alert(dueCifre(543.115));

    </script>
    javascript: tutto attaccato

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.