Denna koden finns i ett pop up fönster som visar en bild från en mapp. Hur kan jag skriva för att kunna klicka nästa och se nästa bild?
Vill tillägga att denna koden: <a href="javascript:history.go(-1);">Tillbaka</a>
inte funkar eftersom man då måste ha bläddrat tidigare i mappen.
För att kunna gå till nästa bild så måste du ju på något sätt ta reda på vilken bild som är nästa bild. Sedan är det bara att länka till samma sida med den nya bilden:
Ok, men var lägger jag in detta i koden:
<a href="popupsidan.asp?ShowPic=<%=strNextPicture%>">
Koden jag skrev är alltså popup sidan med bild...och popup sidan hämtar bild från mapp. Popup filen heter sp.asp
Är dt ngn nytta för dig att se filen som gör thumbnails och tillåter att klicka upp en popup?
Fick inte det att funka
Ok, popupen går vidare med "nästa" men den verkar inte hitta bilder trots där finns bilder. Ett kryss visas istället. Den letar i rooten där sp.asp finns medan sp.asp hämtar bilder från mappar eftersom det ska finnas veckovis med bilder. Jag kan inte specificera mappar i scriptet heller eftersom det hela tiden läggs till nya.
Att du får ett kryss för bilden betyder att den inte finns, och varför gör den itne det?
Troligen för att du inte svarat på Guffas fråga om HUR du vet vilken som är nästa bild.
Därför är strNextPicture inte något, och du får koden <img src="" border="1"> som visar ingen bild.
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(strPhysicalPath)
Set objFolder = objFile.ParentFolder
Set objFolderContents = objFolder.Files
For each Folder in objFolder.SubFolders
If Left(Folder.Name,1)<>"_" Then
Response.write "<option "
If ShowSub=Folder.Name Then
Response.Write "selected "
End if
Response.Write"value='" & CurFile & "?ShowSub="
Response.Write(Replace(Folder.Name, " ", "%15"))
response.write "'>"
Response.Write(Folder.Name & "</option>")
If ShowSub <= " " Then
ShowSub = Folder.Name
End if
End if
Next
Set objFSO = Nothing
%>
</select>
Den kod du visar tolkar jag som en listning av de olika foldrar som finns i en speciell mapp.
För att kunna bläddra mellan olika bilder, måste du veta hur många det är.
Man kan ju för varje bild du vill visa, med FSO räkna hur många bilder det är, och därigenom förhindra att man loopar för långt.
Men, det innebär också att det görs för varje bild som visas, dvs det borde vara prestandakrävande om man har många besökare.
Filnamnen måste också vara namngivna i följd, annars får man hantera det också.
Andra alternativet är att ha bilderna i en databas; då vet du när en bild visas, vilken som är föregånde/nästa, och kan länka till dessa.
Om man själv har kontrollen över antalet bilder i en mapp, kan man hårdkoda antalet bilder i koden, och kontrollera loopning genom det.
Om vi antar att bilderna heter 1.jpg, 2.jpg osv osv. och att jag inte vet antal eftersom det kan variera hur kan jag då koda detta till mitt script?
Vill helst inte använda databas
Bläddra bakåt är lite värre, när du kommer till bild 1 och tönkte dig en länk till 0, vet du inte vad du ska sätta för siffra istället. Alternativet är att veta att det inte är fler än 100 bilder, och loopa nedåt från det med FileExists till en fil hittas.
Denna loop körs endast när man är på bild 1, och då kan man ju ha överseende med ev belastning, eftersom det blir helt självunderhållande kod!
Kan du inte ha en variabel som räknas upp varje gång en bild läggs till och räknas ned när en bild tas bort. Då blir du av med problemet att du inte vet hur många bilder som finns och kan bläddra både frammåt och bakåt.
Använder jag inte detta kodex med databas eftersom id används? För jag vill inte anv databas. Om inte - går detta att kombinera med föregående förslag: "en variabel som räknas upp varje gång en bild läggs till och räknas ned när en bild tas bort" ?? och hur skulle det se ut i kod tillsammans med nedanstående:
Set objFSO = CreateObject("Scripting.FileSystemObject")
strPathInfo = Request.ServerVariables("PATH_INFO")
strPhysicalPath = Server.MapPath(strPathInfo)
If objFSO.FileExists(strPhysicalPath & id+1 & ".jpg") Then
Response.Write "<a href="?id=" & id+1"">"Nästa bild</a>"
else
Response.Write "<a href="?id=1">"Nästa bild</a>"
End If
Eftersom du efterlyser ett kodförslag, så ska du få ett som kanske passar här.
Väldigt enkelt att lägga till och ta bort bilder, samt ev. bildtext.
Går väl även att anpassa för popup om man vill.
<html>
<head>
<style type=text/css>
body { background:green; color:yellow;}
a {color:yellow; text-decoration:none;}
</style>
<script type="text/javascript">
var images = new Array
("bild1.jpg","bild2.jpg","bild3.jpg","bild4.jpg","bild5.jpg","bild6.jpg","bild7.jpg");
var imgtxt = new Array
("Bildtext 1","Bildtext 2","Bildtext 3","Bildtext 4","Bildtext 5","Bildtext 6","Bildtext 7");
var result;
var restxt;
var index = 0;
function showNext(){
if(index < images.length -1){
++index;
result.src = images[index];
restxt.innerHTML = imgtxt[index];
} }
function showPrev(){
if(index > 0){
index;
result.src = images[index];
restxt.innerHTML = imgtxt[index];
} }
function showFirst(){
result = document.getElementById("result");
restxt = document.getElementById("resultText");
result.src = images[index];
restxt.innerHTML = imgtxt[index];
}
</script>
</head>
<body onload="showFirst();">
<input name="prev" type="button" id="prev" value="Bakåt" onclick="showPrev();" />
<input name="prev" type="button" id="prev" value="Framåt" onclick="showNext();"/>
Se bild nr :
<a href=bild1.jpg>1 </a>
<a href=bild2.jpg>2 </a>
<a href=bild3.jpg>3 </a>
<a href=bild4.jpg>4 </a>
<a href=bild5.jpg>5 </a>
<a href=bild6.jpg>6 </a>
<a href=bild7.jpg>7 </a>
<br>
<div>
<img src="" id="result">
<br>
<div id="resultText"></div>
</div>
</body>
</html>
Ok Bosse...testade ditt kodexempel och det är helt ok men om den som ska sköta detta inte vill och kan fylla i asp filen med exakta bild nr och antal så blir det ju fel. Tanken var att man skulle kunna föra upp bilder via nätet direkt och sen ska dessa visas med thumbnails och nästa funk på pop upen.
Annars var ju scriptet mkt bra....har du ngt utv förslag på det? tex att scriptet själv känner av hur många bilder det finns...namnen kan ju vara bild1, bild2 osv för att förenkla.
bossse skrev:
Eftersom du efterlyser ett kodförslag, så ska du få ett som kanske passar här.
Väldigt enkelt att lägga till och ta bort bilder, samt ev. bildtext.
Går väl även att anpassa för popup om man vill.
<html>
<head>
<style type=text/css>
body { background:green; color:yellow;}
a {color:yellow; text-decoration:none;}
</style>
<script type="text/javascript">
var images = new Array
("bild1.jpg","bild2.jpg","bild3.jpg","bild4.jpg","bild5.jpg","bild6.jpg","bild7.jpg");
var imgtxt = new Array
("Bildtext 1","Bildtext 2","Bildtext 3","Bildtext 4","Bildtext 5","Bildtext 6","Bildtext 7");
var result;
var restxt;
var index = 0;
function showNext(){
if(index < images.length -1){
++index;
result.src = images[index];
restxt.innerHTML = imgtxt[index];
} }
function showPrev(){
if(index > 0){
index;
result.src = images[index];
restxt.innerHTML = imgtxt[index];
} }
function showFirst(){
result = document.getElementById("result");
restxt = document.getElementById("resultText");
result.src = images[index];
restxt.innerHTML = imgtxt[index];
}
</script>
</head>
<body onload="showFirst();">
<input name="prev" type="button" id="prev" value="Bakåt" onclick="showPrev();" />
<input name="prev" type="button" id="prev" value="Framåt" onclick="showNext();"/>
Se bild nr :
<a href=bild1.jpg>1 </a>
<a href=bild2.jpg>2 </a>
<a href=bild3.jpg>3 </a>
<a href=bild4.jpg>4 </a>
<a href=bild5.jpg>5 </a>
<a href=bild6.jpg>6 </a>
<a href=bild7.jpg>7 </a>
<br>
<div>
<img src="" id="result">
<br>
<div id="resultText"></div>
</div>
</body>
</html>
140 ms totalt · 3 externa anrop · v20260731065814-full.55e59744