VBScript giver mulighed for at styre afviklingen af scripts med forskellige kontrolstrukturer. I denne lektion vil vi kigge på eksempler på såkaldte løkker. Løkker kan anvendes til at gentage dele af et script et bestemt antal gange, eller indtil en bestemt betingelse er opfyldt.
Løkken
For...Next fungerer på formen:
For Initialisering To Udtryk
Sætning
Next
Systemet er at sætningen gentages det antal gange som værdien af 'udtryk' fratrukket 'initialisering'. Lyder det uforståeligt? Så prøv at se på et konkret eksempel:
<html> <head> <title>Løkker</title> </head> <body> <% Dim t For t = 1 to 50 Response.Write "<p>Denne tekst gentages 50 gange</p>" Next %> </body> </html>
I dette eksempel benyttes en variabel ved navn t. Som du kan se starter vi med at skrive Dim t, det kaldes at deklarere en variabel med
Dim. Man behøver ikke at deklarere sine variabler, men det anses for at være god kodeskik - blandt andet fordi det er lettere at overskue hvis en anden person på et senere tidspunkt skal læse din kode igennem og forstå den.
Ellers forklarer eksemplet jo næsten sig selv. Løkken beder serveren om at gentage teksten mens t er mellem 1 og 50. Hver gang løkken når til Next bliver t plusset med 1.
Det er muligt at specificere hvilken værdi der skal tillægges t hver gang løkken gennemløbes. Det gøres med Step. Dette kan vises med følgende eksempel:
<html> <head> <title>Løkker</title> </head> <body> <% Dim t For t = 1 to 50 Step 5 Response.Write "<p>Variablen t er nu = " & t & "</p>" Next %> </body> </html>
Her vokser t altså med værdien 5 hver gang løkken gennemløbes. Bemærk iøvrigt hvordan værdien af t kan anvendes i sætningen.
En anden måde at lave en løkke på er med
Do...Loop på formen:
Do {While | Until} kondition
Sætning
Loop
Eller man kan sætte konditionen ud for Loop istedet (ingen praktisk forskel):
Do
Sætning
Loop {While | Until} kondition
Syntaksen kan næsten oversættes direkte til dansk - alt efter om man benytte While eller Until:
Lad os kigge på et simpelt eksempel:
<html> <head> <title>Løkker</title> </head> <body> <% Dim t t = 1 Do Until t = 6 Response.Write "<h" & t & ">Overskriftsniveauer</h" & t & ">" t = t + 1 Loop %> </body> </html>
Fangede du den? Først deklarerer vi variablen t, derefter sætter vi den til værdien 1. Vores løkke udskriver herefter headertags med t som niveau, indtil t er lig 6.
I princippet er der ingen begrænsninger i hvordan løkker kan anvendes. Man kan således sagtens sætte løkker inden i løkker - og dermed opnå mange gentagelser.
Det kan dog godt betale sig at være påpasselig - ASP bliver langsommere jo mere komplicerede og omfattende scripts man skriver. Prøv f.eks. at kigge på det næste eksempel hvor vi med 3 løkker kan få udskrevet over 16 millioner farver!
For ikke at gøre siden langsom har vi dog begrænset antallet drastisk ved at sætte step til 30 - derved begrænses antallet af farver til 512.
<html> <head> <title>Løkker</title> </head> <body> <% Dim intRed, intGreen, intBlue, strColor For intRed = 0 to 255 Step 30 For intGreen = 0 to 255 Step 30 For intBlue = 0 to 255 Step 30 strColor = "rgb(" & intRed & "," & intGreen & "," & intBlue & ")" Response.Write "<span style='color: " & strColor & "'> " & strColor & "</span>" Next Next Next %> </body> </html>
Eksemplet bygger på at de tre grundfarver (rød, grøn og blå) hver kan antage en værdi mellem 0 og 255 - enhver kombination af de tre farver danner en farve på formen rgb(255,255,255). Herefter er det blot at benytte denne farvekode i CSS koden for et <span>.
Løkker bliver mere nyttige når du har lært lidt mere. Så når du har forstået princippet i en løkke, kan du gå videre til næste lektion, som handler om betingelser