©ilj@flowsim.se JavaScript på svenska - elementa 1 - variabler och datatyper |
variabler och datatyper ? |
Först ett exempel! Säg att man tänker använda kod som visar en meddelanderuta när användaren klickar på länkar som öppnar ett nytt fönster. Då kan man skriva så här: <A HREF="URL" ONCLICK="alert('Den här sidan...')">text</A> <A HREF="URL" ONCLICK="alert('Den här sidan...')">text</A> <A HREF="URL" ONCLICK="alert('Den här sidan...')">text</A> <A HREF="URL" ONCLICK="alert('Den här sidan...')">text</A> Om man tänker använda samma text på flera ställen kan det vara en god idé att placera texten i en variabel; man slipper upprepa texten i varje länktagg och det blir enklare att göra ändringar i texten eftersom den finns på ett enda ställe. När sidan laddas skulle man då kunna definiera en variabel som man kallar t ex meddelande och vars värde är den text som ska visas i meddelanderutan. Så här: <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> <!-- meddelande="Den här sidan...!" //--> </SCRIPT> När man sedan använder alert() och vill visa just den här texten behöver man inte skriva hela texten utan bara använda variabeln. Så här: <A HREF="URL" ONCLICK="alert(meddelande)">text</A> Det ska inte finnas några citationstecken runt variabeln meddelande! Vill man däremot visa en alert med texten "meddelande" ska man använda citationstecken och skriva så här: <A HREF="URL" ONCLICK="alert('meddelande')">text</A> Säg att man har en sida med en animation som består av 5 olika bilder och att man vill hålla reda på hur många gånger animationen börjar om från första bilden. Då skulle man kunna deklarera en variabel så här: <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> <!-- talet=0 //--> </SCRIPT> Variabeln talet sätts alltså till noll när sidan laddas. Varje gång alla fem bilderna i animationen har visats ska talet sedan räknas upp med 1. <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> <!-- //animationskod, när femte bilden visas //så räknas talet upp, så här: talet=talet+1 //--> </SCRIPT> Första gången koden här ovanför utförs är talet lika med 0, resultatet blir alltså talet=0+1, dvs talet antar värdet 1, nästa gång koden utförs har talet värdet 1, resultatet blir alltså talet=1+1, talet är nu lika med 2 etc Om man vill köra animationen fem "varv" kan man alltså använda kod som stoppar animationen om variabeln talet är lika med 5. Så här: <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> <!-- //animationskod if(talet==5) //här följer kod som stoppar animationen //--> </SCRIPT> I JavaScript kan man deklarera en variabel genom att helt enkelt ge den ett värde. Så här: <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> <!-- talet=0 meddelande="Hej!" //--> </SCRIPT> Man kan också använda var. Så här: <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> <!-- var talet=0 meddelande="Hej!" //--> </SCRIPT> En variabel kan vara lokal eller global. Om man deklarerar en variabel inne i en funktion och använder var är variabeln lokal. Det innebär att det värde som ligger i variabeln "glöms bort" så fort koden i funktionen är utförd. En global variabel deklareras normalt utanför alla funktioner. En global variabel - som t ex meddelande i exemplet ovan - finns tillgänglig och kan användas på olika ställen så länge sidan visas. Dvs så länge sidan är uppe kan man få fram det värde, i det här fallet den text, som ligger i variabeln. Om man i stället deklarerar en variabel meddelande bara som en lokal variabel inne i en funktion, så här: <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> <!-- function iljalert() { var meddelande="Hej!" //en lokal variabel! alert(meddelande) } //--> </SCRIPT> så kan man inte använda meddelande någon annanstans. Dvs enda sättet att använda meddelande är att anropa funktionen iljalert() och när det meddelande som definierats där har visats så är variabeln bortglömd. Varje försök att använda variabeln, t ex så här: <A HREF="URL" ONCLICK="alert(meddelande)">text</A> skulle i det här fallet resultera i ett felmeddelande av typen |
meddelande is not defined. |
Att hålla isär lokala och globala variabler är förstås viktigare ju
längre och mer komplicerad koden blir. I slutet av den här delsidan
finns ett enkelt exempel på vad som kan hända om man inte har koll på
vilket värde som för tillfället ligger i en variabel.
"Hej! 10" resp "Priset är 10 kronor"
|
GLOBAL eller LOKAL? Säg att man har ett antal länkar på en sida. En klickning på någon av dem ska visa en meddelanderuta med texten "Det här är...!". I endast ett fall ska en annan text - "Finns ej!" - visas. Den text som ska användas flera gånger deklareras som en global variabel meddelande utanför alla funktioner. Den text som ska visas en enda gång definieras inne i en funktion. Så här skulle det skriptet kunna se ut:
Därefter klickar användaren på länk4; funktionen iljalert() anropas och texten som visas lyder "Finns ej!". Så långt allt väl. Men, om nu användaren klickar på länk5 (eller på någon av de andra länkarna igen) kommer den text som visas att vara "Finns ej!"; variabeln meddelande fick ju ett nytt värde (nämligen texten "Finns ej!") när funktionen iljalert() anropades. Ett sätt att undvika det här felet är förstås att deklarera variabeln meddelande i funktionen med var; därmed blir den lokal och antar värdet "Finns ej!" bara tills dess att koden i funktionen är utförd. Exemplet är förstås lite konstruerat, det enklaste i det här fallet skulle förstås vara att skicka med den text som ska visas en enda gång som argument i anropet, så här: <A HREF="javascript:alert('Finns ej!')">länk4</A> |
Ett exempel på användning av boolesk algebra: Fången A ska välja mellan två dörrar. Den ena leder till friheten, den andra till exekutionsplutonen. A får ställa en enda fråga till någon av de två fångvaktare som bevakar varsin dörr. Frågan ska vara sådan att den kan besvaras med antingen ja eller nej. En av vakterna ljuger, den andre talar sanning. Hur ska frågan lyda? |
Sidan gjordes av ilj@flowsim.se Senast öndrad 23 januari 1999. Den här sidan hör hemma i ett ramsystem hos: http://www.flowsim.se |