• User

    variabile numerica riconosciuta come stringa

    ho creato un convertitore in javascript da celsius a kelvin(il codice lo copio a fondo pagina)

    il problema è che quando converto da celsius a kelvin la variabile di input che è numerica la considera come una stringa infatti non viene stampata la somma ma il numero immesso seguito da 273. Probabilmente si tratterà si un errore banale ma sono alle prime armi. grazie

     <html>
    <head>
    <title> Convertitore Celsius - Kelvin </title>
    <script type="text/javascript"><!--
    
    var num1;
    
    var num2;
    
    function convert ()
    
    {
    
    if (document.conversion.select1.value == "c2k")
    
    {
    
    num1 = document.conversion.text1.value;
    
    num2 = num1 + 273;
    
    document.conversion.text2.value = num2;
    
    }
    
    else 
    
    {
    
    num1 = document.conversion.text1.value;
    
    num2 = num1 - 273;
    
    document.conversion.text2.value = num2;
    
    }
    
    }
    
    //-->
    
    </script>
    
    </head>
    <body>
    <table border="1">
    <form name="conversion">
    <tr>
    <td>
    <b>Input</b><br>
    <input type="text" name="text1">
    </td>
    <td>
    <b>Output</b><br>
    <input type="text" name="text2">
    </td>
    </tr>
    <tr>
    <td colspan="2" align="center">
    <button type="reset">annulla</button>
     &nbsp;&nbsp;&nbsp;
    <input type="button" name="butt1" value="Converti" onclick="convert()">
    <td>
    </tr>
    <tr>
    <td>
    <select name="select1">
    <option value="c2k">Da Celsius a Kelvin
    <option value="k2c">Da Kelvin a Celsius
    </select>
    </td>
    </tr>
    </table>
    </form>
    </body>
    </html>
    

  • Super User

    Ciao 🙂

    Hai fatto bene a postare tutto il codice così mi è stato facile verificare il problema, però conviene formattarlo come ho fatto io per migliorare la leggibilità dei post.

    Guarda, ho fatto un paio di modifiche:

    <html>
    <head>
    <title>Convertitore Celsius - Kelvin</title>
    <script type="text/javascript"><!--
    
    var num1;
    
    var num2;
    
    function convert ()
    
        {
        
        if (document.conversion.select1.value == "c2k")
            
            {
            
            num1 = parseFloat(document.conversion.text1.value);
            
            num2 = num1 + 273.15 ;
            
            document.conversion.text2.value = num2;
            
            }
        
        else
        
            {
            
            num1 = parseFloat(document.conversion.text1.value);
            
            num2 = num1 - 273.15;
            
            document.conversion.text2.value = num2;
            
            }
        
        }
    
    //-->
    
    </script>
    </head>
    <body>
    <table border="1">
      <form name="conversion">
      
      <tr>
        <td><label for="text1"><b>Input</b></label>
          <br>
          <input type="text" name="text1" id="text1">
        </td>
        <td><label for="text2"><b>Output</b></label>
          <br>
          <input type="text" name="text2" id="text2">
        </td>
      </tr>
      <tr>
        <td colspan="2" align="center"><button type="reset">annulla</button>
          <input type="button" name="butt1" value="Converti" onclick="convert()">
        <td>
      </tr>
      <tr>
        <td><select name="select1">
            <option value="c2k">Da Celsius a Kelvin</option>
            <option value="k2c">Da Kelvin a Celsius</option>
          </select>
        </td>
      </tr>
    </table>
    </form>
    </body>
    </html>
    

    La prima modifica è la funzione parseFloat(), la seconda è superflua ma forse è utile da fare, si tratta del tag label aggiunto ai campi di testo.
    Le variabili javascript --> http://javascript.html.it/guide/lezione/847/tipi-di-variabili/

    Il tag label (che attiva i campi cliccando anche sulle scritte) --> http://lau.csi.it/risorse/xhtml_tagxtag/label.shtml


  • User

    Grande!! Grazie!! 😄