Autor Zpráva
jozef.dinda
Profil
Ako napísať kód pre súčet premennej x a premennej y. Matematický operátor + spojí čísla. Potrebujem ich súčet. Kód:
<!DOCTYPE html>
 <head>
  <title>matematicke operacie 2</title>
  <script language="JavaScript"><!--
   function delenie() {
        var t1 = document.getElementById("t1");
        var t2 = document.getElementById("t2");
        var t3 = document.getElementById("t3");
        var t4 = document.getElementById("t4");
    var t5 = document.getElementById("t5");
    var t6 = document.getElementById("t6");
        var x = t1.value;
        var y = t2.value;
    
    var z = x / y;
        var zsucin = x * y;
    t4.value = zsucin;

    var zsucet = x + y;
    t5.value = zsucet;

    var zrozdiel = x - y;
    t6.value = zrozdiel;

        if (isFinite(z)) {t3.value = z;} else {t3.value = "chyba";}}  
       
  </script>
 </head>

 <body>
  <p>
   x:<input type="text" id="t1" name="t1"/>
   y:<input type="text" id="t2" name="t2"/>

   <input type="button" value="vypočítať" onclick="delenie();"/>
  </p>
t3=x/y<p><input type="text" id="t3" name="t3" readonly="readonly"/></p>
t4=x*y<p><input type="text" id="t4" name="t4" readonly="readonly"/></p>
t5 = xy  - spojí reťazce!!!!! =<p><input type="text" id="t5" name="t5" readonly="readonly"/></p>
t6=x-y <p><input type="text" id="t6" name="t6" readonly="readonly"/></p>
 </body>
</html>
Pri spustení urobí:
Ak za x dám napr. 8 a za y číslo 2 vypíše správne podiel 4, súčin 16, namiesto súčtu spojí do "reťazca" 82 a správne vypočíta rozdiel 6.
Kde mám chybu?
DarkMeni
Profil
Jak říkáš, spojí to řetězce. Jestli to chceš sečíst, tak hodnoty z formulářových polí, které získáš metodou getElementById (jako řetězec), přetypuj na číslo přes parseInt nebo parseFloat jestli tam mohou být i desetinná čísla (šla by použít i knihovna Math, ale to je zbytečný).
Třeba změň řádek 12 a 13:
var x = parseInt(t1.value, 10),
  y = parseInt(t2.value, 10);
Druhý argument lze vynechat, ale pak ta funkce číselnou soustavu odhaduje a nemusí se vždy trefit
margin
Profil *
Časté potíže, zajímavosti a poučné debaty » Součet čísel versus součet řetězců
Probírá se tam příčina a jsou tam i různá řešení.
jozef.dinda
Profil
DarkMeni:
Ďakujem DarkMeni, počíta to.
DarkMeni
Profil
Vlastně, jak poslal margin ten odkaz, tak možná by bylo jedodušší kdybys to třeba vynásobil 1 nebo přičetl kladnou hodnotu (zápis by byl kratší a možná by se to vyhodnotilo o nějakou mikrovteřinu rychleji)
var x = +t1.value;
//nebo
var x = t1.value * 1
jozef.dinda
Profil
DarkMeni:
OK. Super.
Toto téma je uzamčeno. Odpověď nelze zaslat.