Stránka 1 z 1

(Snáď) Jednoduchý problém v JavaScripte

Napsal: 01 led 2015 02:18
od BravoZ
Ahoj, potrebujem sa spýtať pre niekoho možno hlúpu otázku..:
Prečo, ak za a aj b napíšem 5, tak a+b = 55 a nie 10 ?

var a =prompt()
var b =prompt()
alert(a + b)

Teda tipujem, že tú 5 berie ako text, nie ako číslo.
A otázka je, ako docieliť to, aby bol výsledok a+b matematický ?

Snáď chápete, čo sa pýtam..
Ďakujem

Re: (Snáď) Jednoduchý problém v JavaScripte  Vyřešeno

Napsal: 01 led 2015 08:45
od faraon
Tvůj tip je správný, načítáš řetězec, který musíš před počítáním zkonvertovat na číslo:

Kód: Vybrat vše

<script>
  var s1 = prompt("1. číslo:","0");
  var s2 = prompt("2. číslo:","0");
  var a = parseInt(s1,10);
  var b = parseInt(s2,10);
  var c = a + b;
  alert("Součet: "+c);
</script>

Je dobré zadat defaultní hodnotu, která se načte pokud uživatel nic nevloží, abys výsledek neměl NaN.

Podle toho jestli budeš pracovat s celými nebo reálnými čísly použij příslušnou převodní funkci:

Kód: Vybrat vše

parseInt(string, radix);
parseFloat(string,radix);

Kde radix je základ číselné soustavy ve které převádíš, v rozsahu 2-36, ale s tou naší desítkovou snad zatím vystačíme.

Samozřejmě to můžeš zkrátit a ušetřit pár proměnných za cenu menší přehlednosti:

Kód: Vybrat vše

<script>
  var x = parseInt(prompt("X:","0"),10);
  var y = parseInt(prompt("Y:","0"),10);
  alert("Součet: "+(x+y));
</script>

Bacha na závorky v tom alert(), ať to sečteš dřív než se to převede zpět na text!

A protože je JavaScript odvozený z jazyka C, tak je minimálně slušnost ty středníky na konci řádků dělat, nikdy nevíš kdy tvůj skript v nějakém novějším prohlížeči přestane fungovat, on i HTML5 proti staršímu HTML také určité dřív tolerované chyby bere přísněji, a některé prasecky napsané weby se v něm prostě nezobrazují.

Re: (Snáď) Jednoduchý problém v JavaScripte

Napsal: 01 led 2015 13:40
od BravoZ
Ďakujem Ti pekne :)