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 Mesaje: 4343
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 Mesaje: 313
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 Mesaje: 4343
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 Mesaje: 328
poti folosi si asa:

Cod: Selectaţi tot

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