Jag har en bläddringsfunktion där man bläddrar mellan kapitel. Den sida man är på finns i 'page'.
Eftersom det finns många kapitel vill jag få både kapitel fram och bak i samma Case-sats, för att slippa upprepa det två gånger...
Men, hur gör man det på rätt vis?
Jag kan skicka med en flagga till funktionen för att berätta vilken variabel jag vill ha utskriven, men så gör man väl inte?
Function chapter(a,b)
'a: aktuell sida, b: 0/1-olika utskrift
Select Case a
Case 1
prevchap=64
nextchap=2
Case 2
prevchap=1
nextchap=8
osv
End Select
if b=0 then response.write prevchap else response.write nextchap
End Function
Kallas via <a href="?page=<%chapter(page)%>">bläddra</a>
Testade snabbt med Sub, som jag aldrig använt tidigare, och då fungerar det som jag vill, men har jag använt Sub rätt?
Sub chapter(a)
'a: aktuell sida
Select Case a
Case 1
prevchap=64
nextchap=2
Case 2
prevchap=1
nextchap=8
osv
End Select
End Sub
Kallas via <a href="?page=<%nextchap%>">framåt</a> och
jag sätter chapter(page) på lämpligt ställe i koden.
Funktioner skall returnera någonting, annars finns det ingen anledning att använda en funktion. Ska du inte returnera någonting, använd en sub.
Ditt första exempel, om jag hade gjort det som en funktion, skulle sett ut så här:
Function chapter(a,b)
'a: aktuell sida, b: 0/1-olika utskrift
Select Case a
Case 1
prevchap=64
nextchap=2
Case 2
prevchap=1
nextchap=8
osv
End Select
if b=0 then chapter = prevchap else chapter = nextchap
End Function
Kallas via <a href="?page=<%=chapter(1,0)%>">bläddra</a>
Ditt andra exempel, sub-exemplet, förstår jag inte riktigt. Använd en funktion som ovan till exempel, och låt funktionen returnera ett värde.
Okej, jag är med, jag satte en response.write istället för att returnera något.
Eftersom jag inte gillade min flagga, testade jag med en Sub istället, för att se om det fungerade bättre/blev snyggare.
Snyggare blev det, fast inte rätt kodat = fel ändå alltså.
Felet är alltså att jag inte returnerade något, utan skrev ut det istället.
Eftersom du använder en flagga som du gör, är det alltså rätt att använda den på detta vis, var osäker på detta också.