Introduktion till JavaScript
Del 5




En viktig programmeringsteknik är användandet av vektorer. De flesta programmeringsspråk stöder dem på ett eller annat sätt. Du kanske har kommit till en punkt där vektorer skulle kunna hjälpa dig att komma vidare, men när du tittar i dokumentationen från Netscape inser du att vektorer inte nämns. Problemet är att vektorer inte finns i JavaScript, men jag kan naturligtvis visa dig ett sätt att komma runt problemet!
Till att börja med, vad är vektorer? Man kan säga att vektorer är som många variabler som sitter ihop. Låt säga att du vill ha 10 variabler. Du skulle kunna börja med variablerna a, b, c..., men det är väldigt omständigt. Särskilt om du vill lagra mer än 100 variabler. Om du har en vektor som heter MinVektor och den har 10 element kan du adressera de olika elementen med MinVektor[1], MinVektor[2], MinVektor[3]... (många programspråk börjar med 0 som det första elementet, men vi vill ha 1 som första element eftersom det är det sätt vi kommer att använda det senare i JavaScript). Om man vill lagra nummer 17 i första elementet skriver man MyArray[1]=17. Du ser att man kan arbeta med vektorer på samma sätt som med vanliga variabler, men det finns några andra finesser. Om man vill lagra nummer 17 i alla element man man skriva så här:
for (var i=1;i<11;i++) MyArray[i]=17
Kommandot for talar om för datorn hur ofta nästa kommando ska utföras. For-loopen börjar med i= 1. Först får datorn kommandot MinVektor[1]= 17. Därefter ökas i med 1 och då blir kommandot MinVektor[2]= 17. i ökas till dess att den har värdet 10. (Uttrycket i<11 i for-loopen måste vara sant. Om i är 11 är uttrycket inte längre sant).
Nu ska jag visa en funktion som initierar vektorer. Den här funktionen diskuterades i mail-listan JavaScript.

function initArray() {
      this.length = initArray.arguments.length
      for (var i = 0; i < this.length; i++)
      this[i+1] = initArray.arguments[i]
   }

Du behöver inte förstå den här funktionen. Det räcker med att du vet hur man använder den. Om du vill skapa en vektor med tre element skriver du: var MyArray= new initArray(17,18,19). 17,18,19 är tilldelade elementen 1,2,3. Du kan lika väl skriva strängar till din vektor. Du behöver inte bry dig om vilken typ som används! var heyho= new initArray("This","is","cool"). Att blanda olika typer är inget problem alls: var Mixedup= new initArray(17,"yo",103).

Nu ska jag initiera vektorn 'Mixedup' och visa utdatat:

Det här är scriptet för utdatat:

<script language="JavaScript">
<!-- Hide
  var Mixedup= new initArray(17,"yo",103);
  document.write("Element No. 1: "+Mixedup[1]+"<br>");
  document.write("Element No. 2: "+Mixedup[2]+"<br>");
  document.write("Element No. 3: "+Mixedup[3]+"<br>");
// -->  
</script>


Igår skrev jag ett litet spel. Jag stötte på ett problem som du kanske också har. Om du vill tömma skärmen eller ett fönster tittar du i Netscapes dokumentation och ser att JavaScript känner till funktionen 'document.clear()', men om du använder funktionen händer ingenting! Funktionen document.clear() verkar inte fungera på någon plattform. Gordon McComb gav mig följande script som tömmer skärmen på det sätt jag ville.

     document.close();
     document.open();
     document.write("<P>");

Man behöver inte skriva document.write("<P>");.>");. Det viktiga är att du skickar någonting till skärmen. Det här fungerar bra med frames också.


Nu ska vi titta på ett script som låter dig navigera genom olika dokument. Vad jag talar om är funktionerna back() och forward(). En back-länk på din hemsida är inte samma sak som back-knappen i Netscape Navigator. Jag har t ex några back-länkar som fungerar som vanliga länkar, men jag vet att besökaren antagligen kommer från den sida jag länkar till. Back-knappen i Netscape Navigator går ett steg baklänges i din historie-lista. Detta kan man även göra i JavaScript. Ta den här länken för att gå tillbaka! Scriptet jag använde ser du här nedan:

<html>
<body>
<FORM NAME="buttonbar">
     <INPUT TYPE="button" VALUE="Back" onClick="history.back()">
     <INPUT TYPE="button" VALUE="JS- Home" onClick="location='script.htm'">
     <INPUT TYPE="button" VALUE="Next" onCLick="history.forward()">
</FORM>
</body>
</html>
Man kan också skriva history.go(-1) och history.go(1).


Index - Del 1 - Del 2 - Del 3 - Del 4 - Del 6 - Del 7


Senast ändrad 11 maj 1996
© 1996 Stefan Koch

Översatt till svenska av Niklas Johansson 1996