Javascript undefined eltüntetése?
Sziasztok!
Kezdő vagyok a Javascriptben, és lenne egy kódom, viszont mikor lefuttatom működik, jól, viszont 2 hiba van benne.
<form name="kerdessor" action="" onsubmit="return kerdesek()" method="post">
10+20 = <br> <input type="text" name="egy"><br />
<input type="submit" value="Beküldés">
</form>
<script>
egyjo = 30;
function kerdesek() {
egy = document.forms["kerdessor"]["egy"].value;
function ok(){
if(egy==egyjo){
document.write("<font color='green'>",egy,"</font>");
}else{
document.write("<font color='red'>",egy,"</font>");
}
}
document.write(" Válaszod: <br>",ok(),"<br> Helyes válasz: <font color='green'>",egyjo,"</font>");
}
</script>
Itt az a lényeg -lehet meglehetne oldani egyszerűbben-, hogy az első mező el van 'egy'-nek nevezve, és ügye az 'egy' mező értéke egyben egy globális 'egy' változóban van eltárolva, és ha az megegyezik a globális, 'egyjo' változóval, kiírja a választ és a helyes választ is zölddel, ha nem helyes, akkor azt pirossal, míg a helyeset mellé/alá zölddel.
Nos, a hiba:
A kiírás esetén a válasz a 'Válaszod' szó ELÉ kerül, miközben alá kéne, de legalábbis a 'Válaszod' szó UTÁN.
Másik hiba, hogy kiírja, hogy 'undefined', értem, hogy nem definiált, de ezt pontosan, ennél hogy lehetne megoldani?
Előre is köszönöm!
Mert az ok() függvény nem ad vissza semmit, csak document.write-ol. Mivel az ok függvény paraméterbe be van adva a document.write-nak, az ok() előbb fut le mint a document.write. A megoldás az ok() függvényben a document.write-ot lecserélni return-re.
Egyébként ez nem valami szép megoldás, sok a document.write.
Ez azért fordul elő, mert a végrehajtás sorrendje:
1. Az ürlap elküldésekor meghívódik a kerdesek() függvény
2. kerdesek() --> document.write() függvényben szereplő kifejezésben szereplő függvények lefutása, így meghívódik az ok() függvény
3. Az ok() függvény kiírja az "egy" szövegmező értékét a megfelelő színezéssel. De mivel nincs megadva visszatérési értéke (return), ezért az undefined lesz.
Szóval a kerdesek() függyvényben levő document.writeban levő kifejezés így épül fel:
" Válaszod: <br>" + undefined + > "Helyes válasz: <font color='green'>" + 30 + "</font>"
Végül kiíródik a fenti kifejezés.
Javítása (csak hogy működőképes legyen): az ok() függvényben a document.write-ot cseréld ki return-re:
Itt egy példa az "elegánsabb" megoldásra:
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!