webForumDet fria alternativet

RegExp. Unikt ID

ASP

6 svar · 542 visningar · startad av Frezze

Medlem sedan apr. 2004114 inlägg
Frågan#1

Hejsan.
Fixar med en funktion som minskar ner bilder om de är större än 500px i Javascript, så långt är det okej. Dock vill Javascriptet ha ett unikt ID för varje bild så därför måste jag skapa en funktion i RegExp som först ändrar om <img>http://sida.se/bild.jpg\</img>
till
<a href="http://sida.se/bild.jpg" target="_blank"><img id="uniktid" onload="scaleImg('uniktid')" src="http://sida.se/bild.jpg" alt="" /></a>

Och då genrerar ett unikt ID där jag skrivit uniktid. Hur ska detta gå till? Funderade på att köra en funktion som loopar igenom alla de den hittar med <img> för att ta ut bild.jpg och ha de som unikt id, dock har jag redan en sådan funktion till att ta fram och hantera länkar i min RegExp. kod (som gör att jag tydligen inte kan göra det fler gånger, eller har jag fel?), så jag sitter fast.... Eller det kanske är enklare att modifiera om Javascriptet (finner ni nedan)?

Tack på förhand!

<script language="JavaScript" type="text/javascript">
var saveWidth = 0;
function scaleImg(what){
what = document.getElementById(what);
if (navigator.appName=="Netscape")
winW = window.innerWidth;
if (navigator.appName.indexOf("Microsoft")!=-1)
winW = document.body.offsetWidth;
if (what.width>(winW-100) || saveWidth>(winW-100)) {
if (what.width==(winW-100))
what.width=saveWidth;
else
{
saveWidth = what.width;
what.style.cursor = "pointer";
what.width=(winW-100);
}
}
}
</script>
Medlem sedan juni 20019 519 inlägg
#2

.... ja det beror på vad du har för "loop" på dina bilder... jag hade gjort:
<img src='...' id='bild" & recset("id") &"'/>

då får alla dina bilder det id som den har i databasen..

eller i ditt fall med reg.exp "träffen" kan ju vara ditt ID..

Medlem sedan apr. 2004114 inlägg
#3

voigtann1 skrev:

.... ja det beror på vad du har för "loop" på dina bilder... jag hade gjort:
<img src='...' id='bild" & recset("id") &"'/>

då får alla dina bilder det id som den har i databasen..

eller i ditt fall med reg.exp "träffen" kan ju vara ditt ID..

Ditt första förslag går inte eftersom om användaren skulle trycka in fler bilder i sin post än vad han redan har så får ett antal bilder samma ID.
Dock låter de här med reg.exp "träffen" intressant, hur får jag fram den? Eller är det något jag måste skapa?

Medlem sedan juni 20019 519 inlägg
#4

har du någon befintlig regExp syntax?
Annars exempel:
<a href....><img src='$1' id='Unik$1'/></a>

Medlem sedan apr. 2004114 inlägg
#5

voigtann1:
Jag och RegExp tycker inte om varandra, helt klart på den punkten. Testade runt lite i koden med den kod jag redan har som fungerar (autolänkning), men det gick inge vidare. Jag bara säger det, jag är sunkig på RegExp.

Function forLinkCodeNo(text)
text = server.HTMLEncode(text)
text = Replace(text,vbCrLf,"<br />"&vbCrlf&"")
With New RegExp
  .Global = true
  .IgnoreCase = true
  .Pattern="\&#197;"
  text = .Replace(text,"Å")
  .Pattern="\&#196;"
  text = .Replace(text,"Ä")
  .Pattern="\&#214;"
  text = .Replace(text,"Ö")
  .Pattern="\&#229;"
  text = .Replace(text,"å")
  .Pattern="\&#228;"
  text = .Replace(text,"ä")
  .Pattern="\&#246;"
  text = .Replace(text,"ö")
  .Pattern="\&amp;"
  text = .Replace(text,"&")
  .Pattern="\&lt; *hr *&gt;"
  text = .Replace(text,"<b>$1</b>")
  .Pattern="\&lt; *b *&gt;(.*?)\&lt;/b&gt;"
  text = .Replace(text,"<b>$1</b>")
  .Pattern="\&lt; *i *&gt;(.*?)\&lt;/i&gt;"
  text = .Replace(text,"<i>$1</i>")
  .Pattern="\&lt; *u *&gt;(.*?)\&lt;/u&gt;"
  text = .Replace(text,"<u>$1</u>")
  .Pattern="\&lt; *img *&gt;(.*?)\&lt;/img&gt;"
  Set myMatches = .Execute(myString)
strIMGResult=""
intIMGhitID=0
intPos=1
For each item in myMatches
intIMGhitID = intIMGhitID + 1
If objMatch.FirstIndex>lngPos Then
      strResult=strResult & Mid(text, lngPos, objMatch.FirstIndex-lngPos+1)
   End If
   strFound=objMatch

   strFound = "<a href="""&strFound&""" target=""_blank""><img id=""pic"&intIMGhitID&""" onload=""scaleImg('pic"&intIMGhitID&"')"" src="""&strFound&""" alt="""" /></a>"

   strResult=strResult & strFound
   lngPos=objMatch.FirstIndex+objMatch.Length+1
Next
strIMGResult=strIMGResult & Mid(text, lngPos)
text = strIMGResult

  .Pattern = "(http://|https://|ftp://)([a-z/A-Z/0-9/./_/-/-/%/?/:/~/*/(/)/!/=/&]+)"
Set objMatches=.Execute(text)
End With
Set RegExp = Nothing

strResult=""
lngPos=1
For each objMatch in objMatches
   If objMatch.FirstIndex>lngPos Then
      strResult=strResult & Mid(text, lngPos, objMatch.FirstIndex-lngPos+1)
   End If
   strFound=objMatch

   If len(strFound) > 50 Then
   lank = left(strFound, 25) & "..." & right(strFound, 15)
   strFound = "<a href="""&strFound&""" target=""_blank"">"&lank&"</a>"
   else
   strFound = "<a href="""&strFound&""" target=""_blank"">"&strFound&"</a>"
   end if

   strResult=strResult & strFound
   lngPos=objMatch.FirstIndex+objMatch.Length+1
Next
strResult=strResult & Mid(text, lngPos)

forLinkCodeNo = strResult
End Function
Medlem sedan juni 20019 519 inlägg
#6

vad ger det för resultat vid <img id="pic..."> när du visa källa på din generarade sida?

annars inne i for each...
sätt ovanför:

dim id
id = 1

for each....

....
<img id='picID" & id &"' ....>
bör fungera också :e

Medlem sedan dec. 19996 721 inlägg
#7

Det känns som att det vore smidigare att ändra Javascriptet, så att det tar emot en referens till bilden, i stället för ett ID.

260 ms totalt · 4 externa anrop · v20260731065814-full.2d97a731
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
115 ms — ändringar (db)