08. maj 2006 - 09:06Der er
75 kommentarer og 1 løsning
Billede-rotator
Hej eksperter
Jeg har brug for et script der med et tidsinterval på fx. 3 sekunder skifter et billede til et andet.
Alle billederne ligger i samme mappe.
Der er tale om 7 billeder der skal skifte mellem de billeder der ligger i en mappe der hedder "uploaded", og antallet af billeder i mappen øges med tiden.
Hmm.. Hvis du må bruge PHP også kan du måske gøre noget i den her retning: ------------------------- <html> <head> <script type="text/javascript"> function SwitchPics(){ var billeder = new Array(); <? $mappe = opendir("DIN_MAPPE/"); //Her skriver du stien til mappen!!! while($fil = readdir($mappe)){ if($fil!="." && $fil!=".."){ echo "billeder[".$i++."] = \"$fil\""; } } closedir($mappe); ?> var tal = Math.floor(Math.random()*<=$i;?>+0);
Hmm.. ASP er overhovedet ikke min stærke side - så enten må du vente på at der kommer en frem fra sin hule som kan oversætte mit php til asp - eller oprette et spørgsmål i asp kategorien...
<html> <head> <script type="text/javascript"> function SwitchPics(){ var billeder = new Array(); <% dim fs,fo,x set fs=Server.CreateObject("Scripting.FileSystemObject") set fo=fs.GetFolder("c:\test") ' Her skriver du stien til mappen!!!
for each x in fo.files response.write "billeder[billeder.length] = '" + x.name + "';" next
set fo=nothing set fs=nothing %> var tal = Math.floor(Math.random()*<=$i;?>+0);
<html> <head> <script type="text/javascript"> function SwitchPics(){ var billeder = new Array(); <% dim fs,fo,x set fs=Server.CreateObject("Scripting.FileSystemObject") set fo=fs.GetFolder("c:\test") ' Her skriver du stien til mappen!!!
for each x in fo.files response.write "billeder[billeder.length] = '" + x.name + "';" next
set fo=nothing set fs=nothing %> var tal = Math.floor(Math.random() * billeder.length + 0);
"Der er tale om 8 små billeder der skal loade på forsiden og derefter skal de skifte mellem de uploadede billeder med 3 sekunders interval."
Den forstod jeg ikke...
Jeg forstår dit spørgsmål som sådan her: - Der er nogle billeder i en mappe - De skal indlæses ind i JavaScript, fra ASP - Billedet skifter til at andet billede, hvert 3. sekund
Jeg har en mappe med pt. 7 billeder, der med tiden kommer til at indeholde flere billeder.
Det jeg gerne vil er, at der på forsiden loades 7 små billeder (tilfældigt udvalgte fra ovenstående mappe), der med 3 sekunders interval skifter mellem de billeder der nu måtte være i mappen (men altid minimum de 7 der ligger der nu).
Om det bliver læst ind i javascript via ASP eller blot er ren javascript er ikke afgørende.
Javascript (i klienten) kan bare ikke læse på serveren, så der skal du bruge noget serverside, f.eks. php eller asp (og der er det ligegyldigt om du bruger vbscript, cgi/perl eller f.eks. javascript !-)
1) Put dette script i mellem <head> og </head>: <script type="text/JavaScript" language="JavaScript"> function SwitchPics() { var billeder = new Array(); <% dim fs,fo,x set fs=Server.CreateObject("Scripting.FileSystemObject") set fo=fs.GetFolder(server.mappath(".\billeder")) ' Her skriver du stien til mappen!!! for each x in fo.files response.write "billeder[billeder.length] = 'billeder/" + x.name + "';" & vbCrLf next set fo=nothing set fs=nothing %> var randomtal = ""; var tal = ""; var run = true; for(i=1; i < billeder.length + 1; i++) { run = true; do { tal = Math.floor(Math.random() * billeder.length + 0); if (randomtal.indexOf(tal + ",") == -1) { randomtal = randomtal + "" + tal + ","; run = false; } }
Undskyld jeg ikke har reageret, men er lige kommet hjem fra New York.
Jeg har nu rettet scriptet til dette:
<script type="text/JavaScript" language="JavaScript"> function SwitchPics() { var billeder = new Array(); <% dim fs,fo,x set fs=Server.CreateObject("Scripting.FileSystemObject") set fo=fs.GetFolder(server.mappath(".\images\uploaded")) ' Her skriver du stien til mappen!!! for each x in fo.files response.write "billeder[billeder.length] = 'images/uploaded/" + x.name + "';" & vbCrLf next set fo=nothing set fs=nothing %> var randomtal = ""; var tal = ""; var run = true; for(i=1; i < billeder.length + 1; i++) { run = true; do { tal = Math.floor(Math.random() * billeder.length + 0); if (randomtal.indexOf(tal + ",") == -1) { randomtal = randomtal + "" + tal + ","; run = false; } }
var randomtal = ""; var tal = ""; var run = true; for(i=1; i < billeder.length + 1; i++) { run = true; do { tal = Math.floor(Math.random() * billeder.length + 0); if (randomtal.indexOf(tal + ",") == -1) { randomtal = randomtal + "" + tal + ","; run = false; } }
beklager jeg ikke har reageret på emnet i længere tid - men jeg har været på ferie og har haft travlt med arbejde...skal nok prøve at tjekke op på det hurtigst muligt og melde tilbage igen
A) DOCTYPE: Doctype fortæller browseren hvilket regelsæt den skal følge. Doctype linien skal være den første HTML linie i dine filer.
B)XHTML: Jeg kan se at du bruger "/>" til at lukke dine tags. Dette indikerer at du bruger XHTML. Ifølge brugeren olebole, parses browserene XHTML koden som fejlfyldt HTML4.01. - Del 1: http://www.eksperten.dk/artikler/537 - Del 2: http://www.eksperten.dk/artikler/538 Overvej en anden doctype.
Det kan man ikke.. Så skal du flytte JS-koden ud af JS-filen, og ind i dit dokument.. sådan:
<head> ...en masse ting her..
<script type="text/JavaScript" language="JavaScript"> var billeder = new Array(); var antal_sekunder_til_rotation = 3;
function setup() { <% dim fs,fo,x set fs=Server.CreateObject("Scripting.FileSystemObject") set fo=fs.GetFolder(server.mappath(".\images\uploaded")) ' Her skriver du stien til mappen!!! for each x in fo.files response.write "billeder[billeder.length] = 'images/uploaded/" + x.name + "';" & vbCrLf next set fo=nothing set fs=nothing %> visbilleder(); }
function visbilleder() { var randomtal = ""; var tal = ""; var run = true;
for(i=1; i < billeder.length + 1; i++) { run = true; while (run == true) { tal = Math.floor(Math.random() * billeder.length);
Ang [men i IE får jeg en "document.GetElementById" fejl]:
1) Har du prøvet på at rette i koden? Det er et lille "g" i "document.getElementById"
2) Sidder du med en gammel version af Internet Explorer? IE understøtter, så vidt jeg ved, document.getElementById.. men jeg kan lige lave noget ekstra..
får stadig en document.getElementById() er null eller ikke et objekt i IE, samt at billederne kun skifter én gang.
Har følgende kode nu:
<script type="text/JavaScript" language="JavaScript"> var billeder = new Array(); var antal_sekunder_til_rotation = 3; var ns = (document.layers) ? 1 : 0; var ie = (document.all) ? 1 : 0;;
function setup() { <% dim fs,fo,x set fs=Server.CreateObject("Scripting.FileSystemObject") set fo=fs.GetFolder(server.mappath(".\images\uploaded")) ' Her skriver du stien til mappen!!! for each x in fo.files response.write "billeder[billeder.length] = 'images/uploaded/" + x.name + "';" & vbCrLf next set fo=nothing set fs=nothing %> visbilleder(); }
function visbilleder() { var randomtal = ""; var tal = ""; var run = true;
for(i=1; i < billeder.length + 1; i++) { run = true; while (run == true) { tal = Math.floor(Math.random() * billeder.length);
det er også med i min plan - er bare ikke nået så langt endnu - men det ændrer vel ikke det faktum at jeg stadig får "document.all[...] er null eller ikke et objekt" i IE, samt at den kun skifter billederne én gang....både i IE og Firefox
<!-- #include file="counter/online_taeller.asp" --> <!-- #include file="counter/taeller.asp" --> <html> <head> <title>Arkitektfirmaet Gunner Kristensen</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link href="style.css" rel="stylesheet" type="text/css" /> <%if request.QueryString("side") = "Forsiden" or request.QueryString("side") = "" then%> <script type="text/JavaScript" language="JavaScript"> var billeder = new Array(); var antal_sekunder_til_rotation = 3; var ns = (document.layers) ? 1 : 0; var ie = (document.all) ? 1 : 0;;
function setup() { <% dim fs,fo,x set fs=Server.CreateObject("Scripting.FileSystemObject") set fo=fs.GetFolder(server.mappath(".\images\uploaded")) ' Her skriver du stien til mappen!!! for each x in fo.files response.write "billeder[billeder.length] = 'images/uploaded/" + x.name + "';" & vbCrLf next set fo=nothing set fs=nothing %> visbilleder(); }
function visbilleder() { var randomtal = ""; var tal = ""; var run = true;
for(i=1; i < billeder.length + 1; i++) { run = true; while (run == true) { tal = Math.floor(Math.random() * billeder.length);
Hvis du ser en fejl, vil du så ikke være rar at, rette det og poste HELE koden? Er nemlig bange for jeg har ikke helt har styr på klammer m.m. i javascriptet.
Du kan lige lave thumbnails mens jeg kigger på koden.. :-)
Opret en mappe the hedder "thumbs", og upload filerne der hvor filnavnet indeholder "_t" til "thumbs". Derefter skal du ".\images\uploaded" i server.mappath(".\images\uploaded") til mappen med thumbnails..
1) Downlolad http://www.snapfiles.com/download/dldigital-image-tool.html 2) Klik på "Start" når du starter programmet 3) Klik På "Settings" og indtast "75" i "Size limit (pixels)" 4) Klik på "Maintain aspect ration" så den blå lampe slukker 5) Klik på "+" og vælg alle dine billeder 6) Klik på "Process"
Jeg glemte: 5.A) Klik på "Select folder to save new images" og vælg en destinationsmappe, så den ikke overskriver originalerne (hvis den altså gør det?)
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.