🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: be.comp.programming
4 messages
4 total messages Started by CiNdY_V Mon, 30 Dec 2002 16:01
JavascriptBeginster !
#6320
Author: CiNdY_V
Date: Mon, 30 Dec 2002 16:01
34 lines
1994 bytes
Hoi newsgr.
Heb volgende oefening in elkaar gestoken maar weet niet of  ik het goed doe
zo.
Het werkt wel, maar mag het zo,of is er een betere oplossing?
Had eerst het probleem dat jaar "geparst" moet worden zelf gevonden, na veel
ergernis.  ;-)
Zie script:
  var nm1 = "Piet";
  var nm2 = "Els";
  var trouwjaar = 1990;
  var jaar;
  jaar = window.prompt("Geef hier het jaar in!","");
  var getal;
  getal = parseInt(jaar,10);
  var test = getal-trouwjaar;

  switch(test)
  {
  case test = 12:document.write(nm1+' en '+nm2+', dit jaar 12 jaar
getrouwd.');
        break;
  case test = 25:document.write(nm1+' en '+nm2+', dit jaar zilveren
bruiloft.');
        break;
  case test = 50:document.write(nm1+' en '+nm2+', dit jaar gouden
bruiloft.');
       break;
  case test = 60:document.write(nm1+' en '+nm2+', dit jaar diamanten
bruiloft.');
       break;
  default:  document.write("<br>Proficiat !");
     break;
  }
Alle reacties zijn welkom! Grtz CiNdY.
Re: JavascriptBeginster !
#6323
Author: Joris Janssens
Date: Mon, 30 Dec 2002 16:57
92 lines
3862 bytes
"CiNdY_V" <CiNdY_Vastmans@hotmail.com> wrote in message
news:v5_P9.79877$Ti2.11181@afrodite.telenet-ops.be...
> Hoi newsgr.
> Heb volgende oefening in elkaar gestoken maar weet niet of  ik het goed
doe
> zo.
> Het werkt wel, maar mag het zo,of is er een betere oplossing?
> Had eerst het probleem dat jaar "geparst" moet worden zelf gevonden, na
veel
> ergernis.  ;-)
> Zie script:
>   var nm1 = "Piet";
>   var nm2 = "Els";
>   var trouwjaar = 1990;
>   var jaar;
>   jaar = window.prompt("Geef hier het jaar in!","");
>   var getal;
>   getal = parseInt(jaar,10);
>   var test = getal-trouwjaar;
>
>   switch(test)
>   {
>   case test = 12:document.write(nm1+' en '+nm2+', dit jaar 12 jaar
> getrouwd.');
>         break;
>   case test = 25:document.write(nm1+' en '+nm2+', dit jaar zilveren
> bruiloft.');
>         break;
>   case test = 50:document.write(nm1+' en '+nm2+', dit jaar gouden
> bruiloft.');
>        break;
>   case test = 60:document.write(nm1+' en '+nm2+', dit jaar diamanten
> bruiloft.');
>        break;
>   default:  document.write("<br>Proficiat !");
>      break;
>   }

Er is niks echt "mis" met dit script en ik kan zo direct geen varianten
bedenken die een echte verbetering zouden zijn.


2 kleine puntjes, maar geen fouten:

1. Het kan compacter geschreven worden:

var jaar = parseInt(window.prompt("Geef hier het jaar in!",""),10);

daarmee bespaar je ook op een variabele terwijl het programma toch nog
duidelijk/overzichtelijk blijft, maar da's ook wel een kwestie van
persoonlijk stijl en ervaring enzo...


2. in de praktijk ga je controleren of de gebruiker wel echt een getal heeft
ingevoerd, omdat anders het programma volledig in de mist zou kunnen
lopen...

Als de gebruiker iets typt waarvan geen integer gemaakt kan worden, dan
geeft de functie parseInt een NaN (Not a Number) terug. Om daarop te testen
bestaat de functie isNaN() die true wordt indien de variabele een NaN is.

in dit geval bijvoorbeeld:

...
if (isNaN(jaar)) {
  window.alert("ongeldige invoer");
 }
 else {
   test=jaar-trouwjaar;
   ...
 }

happy scripting :)


PS. Door dit bericht ook in be.comp.internet.design te posten doe je aan
multiposting wat tegen de gangbare regels is. Het is beter je te beperken
tot 1 nieuwsgroep.

be.comp.programming lijkt me de meest geschikte zolang het over de syntax
van Javascript gaat.

zie:
http://pandorafaq.webhop.net/faq3.html#CROSSPOST
voor info over multiposten/crossposten


--
Joris "flotspe" Janssens
http://www.xhtml.be/inferno/
http://pandorafaq.webhop.net/
ja, ik weet dat mijn sig ook niet volgens de regels is :)
Re: JavascriptBeginster !
#6324
Author: Wimjan
Date: Mon, 30 Dec 2002 18:41
47 lines
2666 bytes
Joris Janssens schreef:
> "CiNdY_V" wrote 

> > Heb volgende oefening in elkaar gestoken maar weet niet of  ik het goed
> > doe zo. Het werkt wel, maar mag het zo,of is er een betere oplossing?
> >
[...]

> >   switch(test)
> >   {
> >   case test = 12:
[...]

> Er is niks echt "mis" met dit script en ik kan zo direct geen varianten
> bedenken die een echte verbetering zouden zijn.
> 
Weet je zeker dat het switch-statement zo toegestaan is? Volgens de 
documentatie van Netscape op <http://inventio.nl/redir/switch> moet je 
achter 'case' een waarde geven die vergeleken wordt met de waarde die je 
bij 'switch' opgeeft. Niet een toekenning zoals de OP nu heeft dus.

Maar het lijkt me dat de browser waar je (CiNdY_V) in hebt getest je ook 
al had verteld dat er iets mis was met je scriptje. In Internet Explorer 
bijvoorbeeld kun je dat vaak zien doordat er linksonderin je scherm een 
geel icoontje verschijnt (waar je op kunt dubbelklikken om de precieze 
foutmelding te zien).

> PS. Door dit bericht ook in be.comp.internet.design te posten doe je aan
> multiposting wat tegen de gangbare regels is. Het is beter je te beperken
> tot 1 nieuwsgroep.
> 
Het was mij ook al opgevallen dat CiNdY_V vraag twee keer stelde en in 
beide groepen mensen de moeite namen om een antwoord te geven, niet 
wetende dat dat antwoord vaak al lang gegeven was in de andere groep. 
Multiposten is inderdaad wat asociaal.

> zie:
> http://pandorafaq.webhop.net/faq3.html#CROSSPOST
> voor info over multiposten/crossposten

Groet,

Wimjan

-- 
Iemands e-mailadres kwijt? Probeer m'n meta e-mail zoeker eens op 
<http://inventio.nl/metanamesearch/>
Re: JavascriptBeginster !
#6325
Author: Joris Janssens
Date: Mon, 30 Dec 2002 19:39
49 lines
3091 bytes
"Wimjan" <news+@inventio.nl> wrote in message
news:MPG.187ab1b6ded8230398a0ef@news.cis.dfn.de...
> Joris Janssens schreef:
> > "CiNdY_V" wrote
>
> > > Heb volgende oefening in elkaar gestoken maar weet niet of  ik het
goed
> > > doe zo. Het werkt wel, maar mag het zo,of is er een betere oplossing?
> > >
> [...]
>
> > >   switch(test)
> > >   {
> > >   case test = 12:
> [...]
>
> > Er is niks echt "mis" met dit script en ik kan zo direct geen varianten
> > bedenken die een echte verbetering zouden zijn.
> >
> Weet je zeker dat het switch-statement zo toegestaan is? Volgens de
> documentatie van Netscape op <http://inventio.nl/redir/switch> moet je
> achter 'case' een waarde geven die vergeleken wordt met de waarde die je
> bij 'switch' opgeeft. Niet een toekenning zoals de OP nu heeft dus.
>
> Maar het lijkt me dat de browser waar je (CiNdY_V) in hebt getest je ook
> al had verteld dat er iets mis was met je scriptje. In Internet Explorer
> bijvoorbeeld kun je dat vaak zien doordat er linksonderin je scherm een
> geel icoontje verschijnt (waar je op kunt dubbelklikken om de precieze
> foutmelding te zien).

dju, daar heb ik overgekeken, ook al omdat het op die manier wel degelijk
werkt: het geeft de juiste resultaten en geen foutmelding in de
Javascriptconsole van Mozilla.


Ik heb er even Javascript: The Definitive Guide (O'Reilly) op nagekeken en
het blijkt dat vanaf Javascript 1.3 het een expressie mag zijn zolang het
maar evalueert tot een string, number of boolean. Volgens de ECMAScript v3
standaard mag het eender welke expressie zijn.

Maar het lijkt me ook wel beter daar gewoon constanten te gebruiken om alle
eventuele onverwachte neveneffecten en problemen met browsers die een oudere
Javascript-versie gebruiken te vermijden.


--
Joris "flotspe" Janssens
http://www.xhtml.be/inferno/
http://pandorafaq.webhop.net/
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads