I min iver att undvika upprepande kod, så har jag sprungit på ett lustigt fenomen som jag har svårt Hej Anna-Karin och glad fortsättning på påsken. Har du testat att sätta ett startvärde på iCount ? <code> Om du läser mitt första inlägg här ovanför, så ser du att variablen är en räknare som plussas på >Om du läser mitt första inlägg här ovanför, så ser du att variablen är en räknare som Det var lite att tänka på,jag återkommer. > if iCount mod 2 then Ifrån början har iCount värde 0, men även om den får värde 1 så uppdateras inte första raden. I det första exemplet så är det variabeln "j" som jag kör så härLustig effekt vid varannarads-färg
att lösa.
Normalt så skrev jag så här:
j=0
DO UNTIL RS.EOF
j = j + 1
if j mod 2 then
rowColor = "#FFF7F2"
else
rowColor = "#FBE2D3"
end if
Detta blev ju väldigt snyggt och prydligt, men eftersom jag använder detta i en massa filer, så försöker
jag att göra så här:
Sub ColorRow(iCount,firstColor,secendColor)
iCount = iCount + 1
if iCount mod 2 then
rowColor = firstColor
else
rowColor = secendColor
end if
End Sub
'och kallar på den så här:
Call ColorRow(j,"#FFFFFF","#F4F1F1")
Det som nu är lustigt, är att FÖRSTA raden blir fel, dvs inte alls någon av de färger som jag har lagt
in i subben, men resten av raderna är helt ok.
Någon som begriper varför?
Sv: Lustig effket vid varannarads-färg
Sub ColorRow(iCount,firstColor,secendColor)
if iCount mod 2 then
rowColor = firstColor
else
rowColor = secendColor
end if
iCount = iCount + 1
End Sub
Testa att göra så, så att du räknar upp efter, annars tror jag inte att IF satsen stämmer första gången, alltså får du en annan radfärg.
//Anna-Karin
Sv:Lustig effket vid varannarads-färg
Nja det var ett av det första som jag testade, fungerade tyvärr inte.Sv: Lustig effket vid varannarads-färg
T ex: iCount = 0 innan du börjar.
//Anna-KarinSv: Lustig effekt vid varannarads-färg
Sub ColorRow(iCount,firstColor,secendColor)
' Vad använder du iCount till? Vad har den för värde när den skickas till funktionen(se nedan)?
' Varför räknar du upp variabeln?
iCount = iCount + 1
if iCount mod 2 then
rowColor = firstColor
else
rowColor = secendColor
end if
End Sub
' Vilket värde har variabeln j?
Call ColorRow(j,"#FFFFFF","#F4F1F1")
</code>Sv:Lustig effekt vid varannarads-färg
hela tiden.
Tack vare MOD, så kan man kolla om den är jämt delbara med 2, är den det, så skall det vara en viss
färg, annars en annan färg.
I princip så ser ju subben likadant ut som när jag skrev in detta på varje sida, men vad jag frågar om
är det fenomenet att första raden inte blir någon av färgerna.
Jag misstänker att det inte är något fel på min kod, utan att det är någonting med stylesheet att göra.Sv: Lustig effekt vid varannarads-färg
>plussas på hela tiden.
Variabeln plussas inte på "hela tiden" utan den plussas bara på med 1 inne i din subrutin.
Du skickar in ett värde j som inne i subrutinen blir iCount(som bara är synlig inne i subrutinen) som sen ökas med 1... Varför i så fall inte skicka j+1 till subrutinen?
Var har du deklarerat rowColor? Varför använder du en subrutin och inte en funktion som returnerar ett värde?Sv:Lustig effekt vid varannarads-färg
[REDIGERAT]
Det blev ingen som helst skillnad när jag ändrade till en function.
Genom att testa med response.write iCount så såg jag att den räknar upp iCount hela tiden.
det är alltså inte där problemet ligger.
När jag använder en subb, då finns det väll ingen som helst anledning till att deklarera subben, eller har
jag missförstått dig?
Fortfarande så är det som så, att det är den första raden som inte fungerar(det blir ingen av de bestämda
färgerna där) resten av raderna fungerar kanonbra.Sv: Lustig effekt vid varannarads-färg
vad har iCount för värde första gången? vad får iCount mod 2 för värde första gången?
vad får iCount och iCount mod 2 för värde de följande gångerna?Sv:Lustig effekt vid varannarads-färg
Därefter så uppdateras värdet,0,1,2,3,osv
Mod2 är ju bara för att kolla om talet är delbart med 2.Sv: Lustig effekt vid varannarads-färg
du både "kollar mod 2" på och räknar upp med 1.
I nästa variant så är det fortfarande "j" variabeln som
du skickar in men det är iCount som du räknar upp.
Förändras "j"-variabeln (utanför subben) av detta?
Om du kör med
<code>iCount = j </code>
(som det blir när du anropar subben)
och inte räknar upp även "j" så är det väl
samma "j"-värde som du skickar in varje gång?
Nu vet jag inte om det för "oss" närmare lösningen,
men jag rekomenderar att det är j-variabeln som
du plussar på (som i första exemplet)och inte iCount.
ChristerGbgSv:Lustig effekt vid varannarads-färg
<%
if varBgr = "#d5f3fd" Then varBgr ="#ffffff" else varBgr="#d5f3fd"
%>
<table width="551" cellspacing="0" cellpadding="0">
<tr bgcolor="<%=varBgr%>">
<td>hej </td>
</tr></table>
det funkar... och sen om du vill spara kod... är det väl bara att lägga in i en includefil..