webForumDet fria alternativet

Varför funkar inte If x = Cookie?

ASP

2 svar · 173 visningar · startad av KoTTeN

Medlem sedan sep. 20011 722 inlägg
Frågan#1

Tja! Koden nedan är till för att loppa ut en dropp down med siffrorna 1 – 50 i.

<SELECT NAME="Nummer">
<OPTION>NR</OPTION>

<%
	For Slinga = 1 To 50	

		Response.Write("<OPTION ")

		If Slinga = Request.Cookies("addera_lat")("Nummer") Then
		Response.Write("SELECTED ")	
		End If
	
		If Slinga < 10 Then 
		Response.Write("VALUE=""0" & Slinga & """>0" & Slinga & "</OPTION>")
		Else
		Response.Write("VALUE=""" & Slinga & """>" & Slinga & "</OPTION>")			
		End If	
	Next 
%>

</SELECT>

För varje tal som skrivs ut så kollar jag genom en If-sats om talet liknar ett annat tal som finns lagrad i en kaka. Om värdet stämmer så ska SELECTED skrivas ut. (dvs talet blir förvalt) Men ingenting händer, jag får inga felmedelande, utan listans första post visa (nr). Jag vet att kakan innehåller ett tal, då jag testade att skriva ut det separat. Men om jag testar att byter ut

	If Slinga = Request.Cookies("addera_lat")("Nummer")

Then
Mot exempelvis

If Slinga = 10 Then

Så kommer siffran 10 fram som förval.
Varför????

Medlem sedan juni 200032 967 inlägg
#2

Svaret på frågan är subtyper.

För att en jämförelse skall kunna vara sann, så måste det du jämför vara av samma subtyp, i detta fall tal. Du måste då använda en typkonverteringsfunktion, exempelvis CInt().

If Slinga = CInt(Request.Cookies("addera_lat")("Nummer")) then

Koden kan dock ge problem om du försöker konvertera något som inte är ett tal till ett tal. Så om Request.Cookies("addera_lat")("Nummer") är tom, så kan du få problem. Då kan det vara smart att konvertera de båda värden du vill jämföra till strängar i stället, med CStr().

Mvh,

Medlem sedan sep. 20011 722 inlägg
#3

Tack @nders! Du äger!

272 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)