Hej!
När jag hämtar data från databasen vill jag att det ska rymmas i en cell i tabellen och endast vara en rad.
Ex
Installation av central i ga...
Dvs blir texten längre än säg 30 tecken så avslutas den med tre punkter (...)
Har testat följande kod som fungerar på många tecken. Men när databasen bara innhåller ett ord blir ju resultatet så här:
Felsökning...
I det senare fallet ryms hela texten i cellen och de tre punkterna ska inte skrivas ut.
Nu skrivs ju punkterna ut för att jag har angett det i html-koden, men finns det något annat sätt att lösa det på så punkterna inte kommer med vid korta texter?
<%
Private Function max_l(txt,l)
Dim str
str = txt
If Len(str) > l Then
max_l = Left(str,l)& "..."
Else
max_l = str
End If
End Function
Response.Write(max_l(visaUppdrag.Fields.Item("Task").Value), 25))
%>
Här har du en funktion som du hugger av mellan ord istället för mitt i ifall det passar dig bättre.
Inga punkter men det kan du säkert enkelt modifiera.
Instring är texten du vill korta ner och incount är max antal tecken.
function formatLongText(inString,inCount)
if len(InString) > inCount and not inCount = 0 then
LongString = InString
InString = Left(InString, inCount)
if not Replace(InString," ","") = InString then
iLastSpace = InStrRev(InString, " ")
InString = Left(InString, iLastSpace-1)
end if
inString = inString & chr(133)
end if
inString = replace(inString,chr(34),chr(148))
inString = replace(inString,chr(39),chr(146))
formatLongText = inString
end function
Tycker att Denkans kod verkar smidig. MEN får följande felmeddelande:
Teknisk information (för supportpersonal)
Feltyp:
Kompileringsfel i Microsoft VBScript (0x800A03EA)
Syntaxfel
/visaUppdrag.asp, line 189, column 8
Private Function max_l(txt,l)
-------^
Webbläsare:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Sida:
GET /visaUppdrag.asp
Tid:
den 29 oktober 2004, 18:46:33
Mer information:
Microsoft Support
Märkligt...
Aja, då struntar vi att sätta den som Private.
<%
Function max_l(txt,l)
Dim str
str = txt
If Len(str) > l Then
max_l = Left(str,l)& "..."
Else
max_l = str
End If
End Function
Response.Write(max_l(visaUppdrag.Fields.Item("Task").Value), 25))
%>
Teknisk information (för supportpersonal)
Feltyp:
Kompileringsfel i Microsoft VBScript (0x800A03EA)
Syntaxfel
/visaUppdrag.asp, line 189
Function max_l(txt,l)
Webbläsare:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Sida:
GET /visaUppdrag.asp
Tid:
den 30 oktober 2004, 08:58:08
Mer information:
Microsoft Support
Här har du en funktion som du hugger av mellan ord istället för mitt i ifall det passar dig bättre.
Inga punkter men det kan du säkert enkelt modifiera.
Instring är texten du vill korta ner och incount är max antal tecken.
function formatLongText(inString,inCount)
if len(InString) > inCount and not inCount = 0 then
LongString = InString
InString = Left(InString, inCount)
if not Replace(InString," ","") = InString then
iLastSpace = InStrRev(InString, " ")
InString = Left(InString, iLastSpace-1)
end if
inString = inString & chr(133)
end if
inString = replace(inString,chr(34),chr(148))
inString = replace(inString,chr(39),chr(146))
formatLongText = inString
end function
Jag använder detta script för att korta ner text, fast det måste vara någon annan variant av samma script, för jag får tre punkter eter texten som kortats av.
Problemet är att validatorn inte tycker om det, sidan "går aldrig igenom" då.
Vad ska man göra för att få sidan godkänd men samtidigt ha kvar de här punkterna?
Alltså. Validatorn bryr sig ju inte om innehållet på sidan, utan bara koden.
Det måste vara något annat fel, exempelvis att funktionen bryter av någon tagg eller så. Det skulle ju vara betydligt enklare att ta reda på om du visade funktionen och länk till sidan. Gissa är aldrig lätt.
Punkter kan väl knappast vara illegal characters???
Däremot står på rad 181 en konstig fyrkant, kan inte den vara boven?
Men fyrkanten ÄR punterna. Det som är "..." när sidan visas i webläsaren blir den här fyrkanten när sidan valideras och därmed boven.
Här är "min" version av den här funktionen "formatLongText()":
Function flt(inString,inCount)
If inString <> "" Then
If Len(InString) > inCount And Not inCount = 0 Then
LongString = InString
InString = Left(InString, inCount)
If Not Replace(InString," ","") = InString Then
iLastSpace = InStrRev(InString, " ")
InString = Left(InString, iLastSpace-1)
End if
inString = inString & Chr(133)
End If
inString = Replace(inString,Chr(34),Chr(148))
inString = Replace(inString,Chr(39),Chr(146))
Else
inString = " "
End If
flt = inString
End Function
Använder jag inte funktionen får jag inget fel, alltså måste det vara punkterna som ställer till det?
265 ms totalt · 3 externa anrop · v20260731065814-full.c4b5ca48