Avatar billede miss-g Seniormester
16. juli 2008 - 17:44 Der er 13 kommentarer og
1 løsning

script - billeder fra mappe?

Jeg har brugt roenvigs udemærkede banner rotation.

Men kan man ikke gøre det endnu mere brugervenligt ved at scriptet henter billederne fra en mappe, så jeg kan tilføje nye uden at skulle rette i scriptet?

...........................................

<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
<script type="text/javascript">
var banners = ["forsideinfo/info_01.gif","forsideinfo/info_02.gif","forsideinfo/info_03.gif","forsideinfo/info_04.gif"];
var actNum = 0;
//antallet har ingen betydning !-)

function swapBanner(){
  actNum = ++actNum >= banners.length ? 0 : actNum;
  document.getElementById("bannerImg").src = banners[actNum];
}

window.onload = function(){
  setInterval("swapBanner()",10000);
}
</script>
</head>

<body>
<img id="bannerImg" src="forsideinfo/info_01.gif" width="390" height="202">
</body>
</html>
Avatar billede olebole Juniormester
16. juli 2008 - 18:05 #1
<ole>

JavaScript på klienten kan ikke se dine mapper på serveren. I stedet kan du lade serveren kikke ned i mappen og liste filerne som et JS-array i din HTML-fil - som så bliver f.eks. en PHP- eller ASP-fil.

Hvilket sprog understøtter din server?

/mvh
</bole>
Avatar billede olebole Juniormester
16. juli 2008 - 18:47 #2
Hmmm ... det ser udtil, www.onbase.dk ligger på en IIS, så mon ikke, du kan bruge ASP?  =)

Hvis du omdøber dokumentet til 'et_eller_andet.asp', kan du skrive noget à la:

<%
Dim sFolder, fso, myFolder, myFiles, myFile

' Sti til billeder - ret selv:
sFolder = "forsideinfo/"

Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set myFolder = fso.GetFolder(Server.MapPath(sFolder))
Set myFiles = myFolder.Files

nInx = myFiles.Count
sJS = "["
For Each myFile In myFiles
        sJS = sJS & """" & sFolder & myFile.Name & """"
        nInx = nInx-1
        If nInx>0 Then sJS = sJS & ","
Next
sJS = sJS & "]"

Set myFiles = Nothing
Set myFolder = Nothing
Set fso = Nothing
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
<script type="text/javascript">
var banners = <% Response.Write sJS %>;
var actNum = 0;
... osv - osv ...
Avatar billede olebole Juniormester
16. juli 2008 - 18:54 #3
- men der må _kun_ ligge billeder i mappen 'forsideinfo'  ;o)
Avatar billede miss-g Seniormester
16. juli 2008 - 19:38 #4
super olebole - tester det lige senere.

Et andet ønske. Kan man ikke lave links på de forskellige billeder??
Avatar billede olebole Juniormester
16. juli 2008 - 19:53 #5
jo, det kan man sådan set godt - men hvorfra skal scriptet få info om adressen fra? Man kan skrive link-adresserne ind i array'et, hvis man hardkoder billednavne og adresser i et JS-array ... men hvis filnavnene udskrives dynamisk i JS-array'et, mangler vi en måde at finde link-adresserne på. Comprende ...?  =)
Avatar billede miss-g Seniormester
16. juli 2008 - 20:30 #6
Yes comprende *S*

Men så bør vi vel holde os til roenvigs løsning, og kode links ind i den, således at jeg retter manuelt i koden, såfremt nye billeder skal tilføjes.

Noget du kan klare?
Avatar billede olebole Juniormester
16. juli 2008 - 22:22 #7
Vi kunne lave et 'nemhedskompromis': Du laver en fil 'bannerdata.js', hvori du skriver:

var banners = [
    ["forsideinfo/info_01.gif", "http://www.domain_a.dk/"],
    ["forsideinfo/info_02.gif", "http://www.domain_b.dk/"],
    ["forsideinfo/info_03.gif", "http://www.domain_c.dk/"],
    ["forsideinfo/info_04.gif", "http://www.domain_d.dk/"]
];
var actNum = 0;

Din HTML-fil kan så se sådan ud:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
<script type="text/javascript" src="bannerdata.js"></script>
<script type="text/javascript">
function swapBanner(){
  actNum = ++actNum >= banners.length ? 0 : actNum;
  var o = document.getElementById("bannerImg");
  o.setAttribute("src", banners[actNum][0]);
  o.parentNode.setAttribute("href", banners[actNum][1]);
}

window.onload = function(){
  setInterval("swapBanner()",10000);
}
</script>
</head>
<body>

<a href="http://www.domain_a.dk/"><img id="bannerImg" src="forsideinfo/info_01.gif" srtyle="width:390px;height:202px;border:0"></a>

</body>
</html>

- så skulle det gerne køre som barnefingre gennem en bakke Kærgården  =)
Avatar billede olebole Juniormester
16. juli 2008 - 22:22 #8
- måske nok en target="_blank" på linket, så brugeren ikke bliver smidt væk fra dit site  ;o)
Avatar billede olebole Juniormester
16. juli 2008 - 22:23 #9
- og der var en sdavø-fajl ... sådan:
    style="width:390px;height:202px;border:0"></a>
Avatar billede olebole Juniormester
16. juli 2008 - 22:28 #10
- og hvis du skriver i en strict flavour (f.eks. HTML 4.01 Strict), hvor target ikke er understøttet, skriver du bare:
    <p><a href="http://www.domain_a.dk/" onclick="window.open(this.href,'_blank');return false"><img id="bannerImg" src="forsideinfo/info_01.gif" style="width:390px;height:202px;border:0"></a></p>

PS: Under 'Strict' kan man ikke have inline-elementer 'svømmende løse rundt' ... derfor p-tagget  ;o)
Avatar billede miss-g Seniormester
17. juli 2008 - 00:56 #11
Det virker perfekt - bare et problem.

Den stopper efter sidste billede. Vil gerne have at den looper (kører i ring) *S*
Avatar billede miss-g Seniormester
17. juli 2008 - 02:11 #12
Jeg fandt fejlen - der var komma efter sidste billede i bannerdata.js - min fejl.

Læg et svar for din pragtfulde løsning. Takker mange gange.
Avatar billede olebole Juniormester
17. juli 2008 - 13:59 #13
Selvtak  ;o)
Avatar billede olebole Juniormester
17. juli 2008 - 21:39 #14
- og tak for points  =)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester