Kezdőoldal » Számítástechnika » Programozás » JavaScript - miert veszi ugy...

JavaScript - miert veszi ugy az a, b, c - t mint szoveget ha + van kozzottuk, hogy adjam ossze?

Figyelt kérdés

Egy inputon belul a HTML ben beakarok ovlasni harom szamot. AMikor a funkcioban osszeadom oket o szovegkent veszi.


valamint azt hogy miert nem megy a Szam ellenorzes hogy tenyleg szamot adtam meg azt hogy kellene megirni


<!DOCTYPE html>

<html>

<body>



<input id="n1" type="number">

<input id="n2" type="number">

<input id="n3" type="number">


<button type="button" onclick="myFunction()">Submit</button>

<p id="demo"></p>



<script>



function myFunction() {

var x = 0 , b = 0, c = 0 , T=0;


// Get the value of the input field with id="numb"

a = document.getElementById("n1").value;

b = document.getElementById("n2").value;

c = document.getElementById("n3").value;


// If x is Not a Number or less than one or greater than 10

if (isNaN(a || b || c )) {

T = "Input not valid";

} else {

T = (a + b +c); // itt a baj, ha megszorzom oket *1 el akkor mar mukodik,de ez nelkul ?!?

}

document.getElementById("demo").innerHTML = T;

}



</script>


</body>

</html>



2015. jún. 4. 19:24
 1/6 anonim ***** válasza:
A Javascript gyengén típusos, a változóba bármilyen érték befér(jelen esetben string van benne). Ezért ilyen nagyon furcsa konverziók kellenek, mert művelettel lehet átalakítani.
2015. jún. 4. 19:27
Hasznos számodra ez a válasz?
 2/6 A kérdező kommentje:

koszi

Pedig input a htmlben number van kijelolve.

Uj vagyok JS ben,szoval ez bevett szokas pl. hogy megszorzom *1 el ... ?

Nem fogja o az ASCII kod szerint venni azutan akkor az ertekeket...

2015. jún. 4. 19:29
 3/6 anonim ***** válasza:
100%

Ilyenkor célszerű a parseInt() fgvt használni, ha egész számokat, vagy a parseFloat() fgvt használni, ha lebegőpontos számokat kell beolvasni az inputból. Utána pedig mehet a NaN vizsgálat.


[link]

[link]

2015. jún. 4. 19:35
Hasznos számodra ez a válasz?
 4/6 anonim ***** válasza:
56%

Nem csak js-ben vagy te új..

Az a feltétel nem jó. Így mióta vizsgálunk valamit, hogy isNaN(a || b || c)?

A függvény az a||b||c eredményét kapja, ez meg nagyon nem az, amit te akarsz.

És ez nem csak Javascript-ben nem jó, hanem kb sehol.

2015. jún. 4. 22:39
Hasznos számodra ez a válasz?
 5/6 anonim ***** válasza:

Input mezőből kiolvasott érték mindig string, mindegy, hogy a HTML-ben number-re korlátoztad-e. Ez egy tipikus dolog, ajánlott megjegyezni.


Igen, ez gyönyörű: isNaN(a || b || c)

Semmi értelme, egyesével kellene megvizsgálni őket, így lényegében azt vizsgálod, hogy isNaN(true), ha bármelyik mezőbe van írva valami, vagy azt, hogy isNaN(false), ha egyikbe sincs. Mind a két esetben false-sal fog visszatérni az isNaN, aminek marhára semmi értelme. Bár nem ettől nem megy, ami akarsz.


ParseInt/ParseFloat, mielőtt összeadsz, ahogy korábban javasolták. Ha megszorzod 1-gyel, végül is az is megoldja, hiszen olyankor a típusa átalakul (mivel stringgel nem tudsz matematikai műveletet csinálni, ez matematikai művelet eredménye sem lehet string).

2015. jún. 5. 09:34
Hasznos számodra ez a válasz?
 6/6 anonim ***** válasza:

"azt vizsgálod, hogy isNaN(true), ha bármelyik mezőbe van írva valami, vagy azt, hogy isNaN(false), ha egyikbe sincs"


Ez mondjuk nem így van, de a feltétel tényleg nem jó.

2015. jún. 6. 19:49
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!