11. august 2006 - 01:44Der er
6 kommentarer og 1 løsning
Slideshow med forsinket billedtekst
Hej
Billedteksten til et slideshow skal forsinkes, det må kunne klares med setInterval, jeg kan dog ikke finde ud af hvordan.
For at lære navne på mange personer vil jeg vise deres foto og efter en pause det tilhørende navn. Efter visning af navn og billede skal den næste person komme.
Jeg er kommet frem til dette og mangler nu "blot" forsinkelsen:
<script> var antal=<%=intFoto%>; var Navn = new Array (<%=strNavn%>); var Foto = new Array(<%=strFoto%>); var nr =0; var vent= 2000;
function skift() { if (nr == antal) {nr =0}; document.FotoContainer.src=Foto[nr]; //forsinkelse document.getElementById("NavnContainer").value = Navn[nr];; nr++; setTimeout('skift()',vent); } </script>
Foto af p. hansen vises i 5 sekunder uden navn, derefter vises foto og navn i 1 sekund. Skærmen ryddes og J. Hansen dukker op uden navn i 5 sekunder,derefter vises foto o.s.v
<!-- Husk at indsætte din doctype her --> <html> <title>slide</title> <head> <script type="text/JavaScript" language="JavaScript"> Folder = "img/"; Antal = 2; // antallet af billede minus 1, da array starter ved 0 Navn = new Array("Hans", "Ole", "Per"); // fiktive data Foto = new Array("uA.gif","uB.gif","uC.gif"); // fiktive data VentFoto = 5000; VentNavn = 3000; // prøv dig frem med denne værdi Nr = 0;
function skiftbillede() { if (Nr == Antal) Nr = 0; skiftnavn('nulstil'); // nustil navn document.getElementById("billede").src = Folder + Foto[Nr]; // vis billede setTimeout("skiftnavn('')",VentNavn); // vis navn Nr++; setTimeout("skiftbillede()", VentFoto); // funktionen kalder sig selv efter VentFoto-værdien }
function skiftnavn(nulstil) { NavnetDerSkalVises = Navn[Nr]; // navnet sættes i variablen NavnetDerSkalVises if (nulstil != '') NavnetDerSkalVises = ''; // hvis der står noget i "nulstil", overskrives navnet document.getElementById('navn').innerHTML = NavnetDerSkalVises; // vis det der står i variablen NavnetDerSkalVises } </script> </head> <body onload="skiftbillede()"><!-- start slide ved onload --> <center> <img src="" id="billede"><!-- billede-holder hvor billedet skal vises --> <br> <div id="navn"><!-- her vises navnet --></div> </body> </html>
Det er fint at få løst problemet, men endnu bedre hvis man bliver klogere ved samme lejlighed.
Jeg har arbejdet lidt med scrioptet og fundet ud af at mit problem var at jeg brugte setTimeout nestet dette gav en error: Object ekspected
I det første eksempel her under er funktionerne flyttet ud så de kommer i serie (som du viste), det virker fint. I det næste er funktionerne nested (som jeg havde dem oprindeligt), det giver fejl.
Er der en forståelig forklaring på dette??
Denne virker:
function vistxt() { document.getElementById("NavnContainer").value = elev[nr];; }
function skift() { if (nr == antal) {nr =0}; document.getElementById("NavnContainer").value = ''; document.roterimg.src=billede[nr]; nr++; setTimeout('skift()',2000); setTimeout('vistxt()',1000); }
Men denne virker ikke:
function skift() { function vistxt() { document.getElementById("NavnContainer").value = elev[nr];; }
Hmm.. Så vidt jeg ved, kan du ikke neste funktionerne.. Så det er nok derfor du får en fejl.
Synes godt om
Ny brugerNybegynder
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.