Adunare

Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
claUdiu
Mesaje: 313

Adunare

Buna! Am facut si eu un mic calculator cu acest script:

Cod: Selectaţi tot

<script type="text/javascript">

function Calculator()
   
   {

     var PrimulNumar = document.getElementById('primulnumar');
     var AlDoileaNumar = document.getElementById('aldoileanumar');
     var Operatie = document.getElementById('operatie');

    if(Operatie.value == "minus")

      {
 
      var Rezultat = PrimulNumar.value - AlDoileaNumar.value;      

    alert("Rezultatul scaderii este:  "+Rezultat+"");
    return false;

      }else if(Operatie.value == "plus")

        {

          var Rezultat = PrimulNumar.value + AlDoileaNumar.value;

          alert("Rezultatul adunarii este: "+Rezultat+"");

         }else if(Operatie.value == "ori")

            {

              var Rezultat = PrimulNumar.value * AlDoileaNumar.value;

              alert(Rezultat);
 
            }else if(Operatie.value == "impartire")

              {
 
                var Rezultat = PrimulNumar.value / AlDoileaNumar.value;

                alert(Rezultat); 

              }
  

   }
   
</script>

<form action="#" onSubmit=" return Calculator()">
<input type="text" id="primulnumar">
<select id="operatie">
<option value="plus">Adunare</option>
<option value="minus">Scadere</option>
<option value="ori">Ori</option>
<option value="impartire">Impartire</option>
</select>
<input type="text" id="aldoileanumar">

<input type="submit">
</form>
ideea este ca totul merge bine ,inafara de adunare. Daca scriu: 2 si 5 o sa-mi faca: 25, si 7. Care ar putea fi problema? thx!
Se spune ca...."omul tot invata in viata". Dar...Totusi...Trebie sa ne oprim undeva, nu?

MarPlo
Returneaza asa fiindca nu le vede ca numere, ci ca siruri, iar in cazul asta semnul '+' e folosit pt. unirea a doua siruri.
Incearca sa transformi valoarea ca numerica, asa:

Cod: Selectaţi tot

var Rezultat = parseFloat(PrimulNumar.value) + parseFloat(AlDoileaNumar.value);

claUdiu
Multumesc! Merge. Dar, mai am o intrebare:

De ce la celelalte merge, iar la adunare nu? LA celelalte nu am parseFloat.
Se spune ca...."omul tot invata in viata". Dar...Totusi...Trebie sa ne oprim undeva, nu?

MarPlo
claUdiu scrie:De ce la celelalte merge, iar la adunare nu? LA celelalte nu am parseFloat.
Caracterul "+" e folosit si pentru unire siruri, de aceea cand e sir face operatia de unire. Dar ceilalti operatori: scadere, inmultire, impartire; sunt doar matematici si cand sunt aplicati JasaScript transforma automat valoarea in numar.
De exemplu, daca vrei sa transformi sirul "023" in numar, poti face direct: "023" * 1, si va rezulta numarul 23.

cadou
poti folosi si asa:

Cod: Selectaţi tot

var Rezultat = parseInt(PrimulNumar) + parseInt(AlDoileNumar);

Subiecte similare