[Javascript] Mijn eerste stappen: errormeldingen

Pagina: 1
Acties:

  • Rexomnium
  • Registratie: September 2000
  • Laatst online: 21:07

Rexomnium

Vincam aut moriar

Topicstarter
Na maanden vruchteloos andermans scriptjes aan het ontleden en aanpassen voor eigen gebruik, probeer ik het zélf maar eens te leren. Zoals met alles moet je simpel beginnen, maar helaas, ik loop vrij snel vast.

Ik heb een simpel script geschreven waarin er wordt gevraagd om je naam en je groep in te vullen. Als er niets in wordt gevuld geef ik een melding door middel van een alert.

Dit is de code:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script language="javascript">
    naam=0;
    while (naam == 0) {
    naam = window.prompt("Wat is je naam?", "");
    if (naam == 0) {
    window.alert("Je moet je naam invullen"); } }
    
    groep=0;
    while (groep == 0) {
    groep = window.prompt("...en in welke groep zit je?", ""); 
    if (groep == 0) {
    window.alert("Je moet je groep invullen"); } }
    
    if (naam == 0) {
    document.write("Vul alsjeblieft wat in."); }
    else {
    document.write("Hoi ", naam, ", je zit in groep ", groep, "."); }
 </script>


Als je het zou testen, zul je zien dat het allemaal wel redelijk werkt. Behalve als je de dialoogvensters zou annuleren door middel van de escape-toets. Ik wil indien dat gebeurt een melding op het scherm krijgen dat de gebruiker niets heeft ingevuld. Naar mijn weten zijn de variabelen die ik heb gebruikt bij het aanroeren van de esc-toets namelijk leeg. Daarom heb ik een if-statement gebruikt dat als die variabele leeg is, dat hij dan een melding moet geven. Dit werkt dus niet. Wie helpt mij uit de brand?

[ Voor 8% gewijzigd door Rexomnium op 08-02-2004 22:30 ]

We zijn allemaal vaandeldrager in een optocht van gekwetsten.


  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
probeer het eens met NULL

ofwel:

window.alert(groep);

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

Okee, even kijken of je je eigen script snapt:

• Je gebruikt while (groep == 0 ), en daarna nog een keer if group == 0 why :?
• Waarom gebruik je niet:

JavaScript:
1
var groep = window.prompt("kwaak!", "");

• en check ook even of je een waarde terug krijg: NULL of false zal je terug krijgen :)

[ Voor 22% gewijzigd door SchizoDuckie op 08-02-2004 20:41 ]

Stop uploading passwords to Github!


  • Rexomnium
  • Registratie: September 2000
  • Laatst online: 21:07

Rexomnium

Vincam aut moriar

Topicstarter
Papa Eend schreef op 08 februari 2004 @ 20:41:
Okee, even kijken of je je eigen script snapt:

• Je gebruikt while (groep == 0 ), en daarna nog een keer if group == 0 why :?
• Waarom gebruik je niet:

JavaScript:
1
var groep = window.prompt("kwaak!", "");

• en check ook even of je een waarde terug krijg: NULL of false zal je terug krijgen :)
Antwoord op je eerste vraag:
Zolang de variabele 0 is, dient hij die window.prompt te geven. Als je niets invult, moet de gebruiker wel weten dat hij iets moét invullen, vandaar dat hij na de windowprompt nog een keer controleert of 'groep' inhoud heeft gekregen. Als hij dat niet heeft, geeft hij een alert.

In de tutorials die ik op internet heb gevonden (deze) staat "var variabele". Ik heb uitgevonden dat zonder die var het script ook gewoon werkt, dus vandaar dat ik geen var heb gebruikt.

Ik krijg null terug als ik de dialoogvensters heb ge-escaped.

edit:
Oké, laat maar. Het laatste if-statement moet inderdaad niet '0' zijn, maar null (kleine letters).
[code=javascript]
if (naam == null) {
document.write("Vul alsjeblieft wat in, anders heb ik de hele zooi voor niets geprogrammeerd."); }
else {
document.write("Hoi ", naam, ", je zit in groep ", groep, "."); }[/code]

[ Voor 25% gewijzigd door Rexomnium op 08-02-2004 20:54 ]

We zijn allemaal vaandeldrager in een optocht van gekwetsten.


  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
NULL != 0 hoor!
try this:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<script language="javascript">
    while (naam == NULL) {
    naam = window.prompt("Wat is je naam?", "");
    if (naam ==NULL) {
    window.alert("Je moet je naam invullen"); } }
    
    while (groep == NULL) {
    groep = window.prompt("...en in welke groep zit je?", ""); 
    if (groep == NULL) {
    window.alert("Je moet je groep invullen"); } }
    
    if (naam == NULL) {
    document.write("*knip knip*"); }
    else {
    document.write("Hoi ", naam, ", je zit in groep ", groep, "."); }
 </script>

[ Voor 19% gewijzigd door ValHallASW op 08-02-2004 22:36 . Reden: *knip knip* layout :) ]


  • Rataplan
  • Registratie: Oktober 2001
  • Niet online

Rataplan

per aspera ad astra

ValHallASW schreef op 08 februari 2004 @ 20:54:
NULL != 0 hoor!
try this:

code:
1
2
3
4
5
6
7
8
9
10
11
<script language="javascript">
    while (naam == NULL) {
    naam = window.prompt("Wat is je naam?", "");
    if (naam ==NULL) {
    window.alert("Je moet je naam invullen"); } }
    
    if (naam == NULL) {
    document.write("(knip)."); }
    else {
    document.write("(knipknip)", groep, "."); }
 </script>
Heeft iedereen fout: de laatste if(naam==NULL) mag weg: het laatste statement met 'naam' voor dit if-statement is namelijk 'while(naam == NULL)'. Komt dus niet voor. Loopje is trouwens uitstekend, dan kan nauwelijks of niet beter.

Voor de rest is de vraag dus gewoon welke waarden window.prompt teruggeeft. Dat kan je toch gewoon nagaan? Handleiding, internet, proefondervindelijk?

[ Voor 37% gewijzigd door Rataplan op 08-02-2004 21:00 ]


Journalism is printing what someone else does not want printed; everything else is public relations.


  • Rexomnium
  • Registratie: September 2000
  • Laatst online: 21:07

Rexomnium

Vincam aut moriar

Topicstarter
ValHallASW schreef op 08 februari 2004 @ 20:54:
NULL != 0 hoor!
try this:

code:
1
Uhm, zo werkt hij ook
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script language="javascript">
    naam=0;
    while (naam == 0) {
    naam = window.prompt("Wat is je naam?", "");
    if (naam == 0) {
    window.alert("Je moet je naam invullen"); } }
    
    groep=0;
    while (groep == 0) {
    groep = window.prompt("...en in welke groep zit je?", ""); 
    if (groep == 0) {
    window.alert("Je moet je groep invullen"); } }
    
    if (naam == null || groep == null) {
    document.write("Vul alsjeblieft wat in."); }
    else {
    document.write("Hoi ", naam, ", je zit in groep ", groep, "."); }
 </script>

[ Voor 15% gewijzigd door Rexomnium op 08-02-2004 22:29 ]

We zijn allemaal vaandeldrager in een optocht van gekwetsten.


  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
Allemaal fout: de laatste if(naam==NULL) mag weg: het laatste statement met 'naam' voor dit if-statement is namelijk 'while(naam == NULL)'. Komt dus niet voor. Loopje is trouwens uitstekend, dan kan nauwelijks of niet beter.
Ik kopieer ook maar het scriptje van de topicstarter slimmie ;)

en ja, er komt null uit... probeer maar:
http://platypusnet.org/~valhallasw/js.html
Uhm, zo werkt hij ook
Jawel, maar dan zijn je eerste checkroutines overbodig ;)

[ Voor 15% gewijzigd door ValHallASW op 08-02-2004 21:07 ]


  • Rataplan
  • Registratie: Oktober 2001
  • Niet online

Rataplan

per aspera ad astra

En kort alsjeblieft die lollige "Vul alsjeblieft wat in"-mededeling in, want om deze zin is de layout van het topic niet om aan te zien :)

Layout van het script is ook niet om over naar huis te schrijven. Beter bijvoorbeeld:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<script language="javascript">
    debat = 0; // zie vraag hieronder

    naam=debat;
    while (naam == debat) 
    {
        naam = window.prompt("Wat is je naam?", "");
        if (naam == debat) 
            window.alert("Je moet je naam invullen"); 
    }
    
    groep=debat;
    while (groep == debat) 
    {
        groep = window.prompt("...en in welke groep zit je?", ""); 
        if (groep == debat) 
            window.alert("Je moet je groep invullen"); 
    }
    
 </script>

En zoek nou eerst eens uit wat de verschillende returnvalues zijn :) Voor zover dat nou nog niet duidelijk is ;)

[ Voor 17% gewijzigd door Rataplan op 08-02-2004 21:08 ]


Journalism is printing what someone else does not want printed; everything else is public relations.


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 08:20

crisp

Devver

Pixelated

ok, nu in 3 regels:

JavaScript:
1
2
3
var naam, groep; // altijd netjes om het van te voren te declareren
while (!(naam = prompt('Wat is je naam?',''))) alert('voer je naam in aub');
while (!(groep = prompt('En in welke groep zit je?',''))) alert('voer je groep in aub');


Het leuke is dat zowel null (als je op cancel drukt) als een lege string hier de alert triggeren ;)

Intentionally left blank


  • Rexomnium
  • Registratie: September 2000
  • Laatst online: 21:07

Rexomnium

Vincam aut moriar

Topicstarter
crisp schreef op 08 februari 2004 @ 22:15:
ok, nu in 3 regels:

JavaScript:
1
3 regeltjes


Het leuke is dat zowel null (als je op cancel drukt) als een lege string hier de alert triggeren ;)
Jezus, dat is frusterend. Ik heb de hele middag aan mijn code gewerkt; doet hij het effe in drie regeltjes |:(

:)

Goed, dat uitroepteken staat dus voor 'niet', hoe moet ik die code dan lezen?
Rataplan schreef op 08 februari 2004 @ 21:07:
En kort alsjeblieft die lollige "Vul alsjeblieft wat in"-mededeling in, want om deze zin is de layout van het topic niet om aan te zien :)
Oké oké, done :)

[ Voor 50% gewijzigd door Rexomnium op 08-02-2004 22:31 ]

We zijn allemaal vaandeldrager in een optocht van gekwetsten.


  • saviour
  • Registratie: Juli 2000
  • Niet online
RexomniuM schreef op 08 februari 2004 @ 22:29:
Goed, dat uitroepteken staat dus voor 'niet', hoe moet ik die code dan lezen?
Ik kan absoluut geen JS maar ik vind het wel interessant, dit is hoe ik het zou vertalen:

JavaScript:
1
2
3
var naam, groep; // altijd netjes om het van te voren te declareren
while (!(naam = prompt('Wat is je naam?',''))) alert('voer je naam in aub');
while (!(groep = prompt('En in welke groep zit je?',''))) alert('voer je groep in aub');


Er zijn 2 variabelen, namelijk naam en groep.
Zolang er niets is gebeurd met de prompt "wat is je naam?" moet je een alert geven.

Die '' achter de naam in de prompt zorgt ervoor dat er iets niet in beeld komt, ik weet alleen niet meer wat uit mijn hoofd :o

[ Voor 8% gewijzigd door saviour op 08-02-2004 23:07 ]


Verwijderd

da's de default input, mag ook worden weggelaten

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 08:20

crisp

Devver

Pixelated

Verwijderd schreef op 08 februari 2004 @ 23:17:
da's de default input, mag ook worden weggelaten
als je 'm weglaat krijg je heel mooi 'undefined' in je prompt ;)

Over de ! (logical NOT):
Deze operand geeft false terug als hetgeen dat volgt geconverteerd kan worden naar true, en geeft anders true terug.
Niet te verwarren met typecasting waarbij '0' == 0 == false; voor logical operands kunnen alleen null, 0, een lege string ('') en undefined naar false worden geconverteerd; alle andere waarden worden naar true geconverteerd :)

[ Voor 47% gewijzigd door crisp op 08-02-2004 23:32 ]

Intentionally left blank


Verwijderd

Crisp,

Applaus voor je korte code, maar ik vermoed dat RexomniuM
er nu nog minder van snapt :D

RexomniuM: Boeken doen wonderen...

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 08:20

crisp

Devver

Pixelated

Verwijderd schreef op 09 februari 2004 @ 09:40:
Crisp,

Applaus voor je korte code, maar ik vermoed dat RexomniuM
er nu nog minder van snapt :D

RexomniuM: Boeken doen wonderen...
Misschien dan wat voorbeeldjes:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
// logische vergelijkingen:

if (!null) alert('yeah'); // wel alert
if (!'') alert('yeah); // wel alert
if (!nietbestaandevar) alert('yeah'); // wel alert*
if (!0) alert('yeah'); // wel alert
if (!'0') alert('yeah'); // geen alert

// typecasting
if (0 == '0') alert('yeah'); // wel alert

// strict vergelijking (waarde en type)
if (0 === '0') alert('yeah'); // geen alert


* zomaar een niet bestaande variabele (of property) uitvragen genereerd intern een strict warning; om te kijken of een variabele of property al dan niet bestaat kan je beter het type uitvragen:
JavaScript:
1
if (typeof nietbestaandevar == 'undefined') alert('bestaat niet');

Intentionally left blank

Pagina: 1