JavaScript - miert veszi ugy az a, b, c - t mint szoveget ha + van kozzottuk, hogy adjam ossze?
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>
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...
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.
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).
"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ó.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!