12. februar 2004 - 17:33Der er
14 kommentarer og 1 løsning
stop Array
Jeg har fundet dettet script. Men kan ikke finde ud af hvordan jeg kan lave en pause knap og en start knap, så billedet stopper indtil man trykker på en anden knap igen.
håber der er nogle der kan hjælpe :)
<SCRIPT LANGUAGE="JavaScript"> <!-- <!-- Begin // Indstil hastigheden (millisekunder) var slideShowSpeed = 4000; // Lad følgende linie forblive som den er var crossFadeDuration = 2; // Billede-filerne var Pic = new Array(); // For at tilføje flere, fortsæt da bare på samme måde
// Lad være med at ændre noget under denne linie var t; var j = 0; var p = Pic.length; var preLoad = new Array(); for (i = 0; i < p; i++) { preLoad[i] = new Image(); preLoad[i].src = Pic[i]; } function runSlideShow() { if (document.all) { document.images.SlideShow.style.filter="blendTrans(duration=2)"; document.images.SlideShow.style.filter="blendTrans(duration=crossFadeDuration)"; document.images.SlideShow.filters.blendTrans.Apply(); } document.images.SlideShow.src = preLoad[j].src; if (document.all) { document.images.SlideShow.filters.blendTrans.Play(); } j = j + 1; if (j > (p - 1)) j = 0; t = setTimeout('runSlideShow()', slideShowSpeed); } // Her kan du begynde at ændre igen --> </script>
jeg har tænkt på at man måske kan lave en variabel i stedet for var slideShowSpeed = 4000 og så skifte værdien til fx 100000 når man trykker på pause knappen og så sættet værdien tilbage når man trykker på start knappen igen.
<!-- <!-- Begin // Indstil hastigheden (millisekunder) var slideShowSpeed = 4000; // Lad følgende linie forblive som den er var crossFadeDuration = 2; // Billede-filerne var Pic = new Array(); // For at tilføje flere, fortsæt da bare på samme måde
// Lad være med at ændre noget under denne linie var t; var j = 0; var p = Pic.length; var preLoad = new Array(); for (i = 0; i < p; i++) { preLoad[i] = new Image(); preLoad[i].src = Pic[i]; } function runSlideShow() { if (document.all) { document.images.SlideShow.style.filter="blendTrans(duration=2)"; document.images.SlideShow.style.filter="blendTrans(duration=crossFadeDuration)"; document.images.SlideShow.filters.blendTrans.Apply(); } document.images.SlideShow.src = preLoad[j].src; if (document.all) { document.images.SlideShow.filters.blendTrans.Play(); } j = j + 1; if (j > (p - 1)) j = 0; t = setTimeout('runSlideShow()', slideShowSpeed); } // Her kan du begynde at ændre igen --> </script>
<body onLoad="runSlideShow()"> <img src="pic1.jpg" name="SlideShow"> <a href="#" onClick="skift();">skift til 30 </a> <a href="#" onClick="skifttilbage();">skift tilbage til 15 </a>
du bliver nødt til at sige: var slideShowSpeed = 4000;
function skift() { slideShowSpeed = 40000;
}
function skifttilbage() { slideShowSpeed = 4000; } og droppe det med b. Man kan ikke på den måde lave pointers eller references, som man kan i andre sprog (tror det hedder pointere ;-) Det betyder du ikke kan ændre en anden variabels indhold på den måde. Når du siger: var slideShowSpeed = b; betyder det nemlig ikke at når b ændres, så ændres slideShowSpeed også.
mange tak for hjælpen! nu jeg kan godt se hvad du mener.. det fungere bare ikke helt optimalt..man skal klikke 4-5 gange får at få det til at stoppe i det hele taget rimelig ustabilt.. :) du kender ikke et godt sted hvor man kan finde et script der både fader mellem billederne og som man kan stoppr og starte igen???
virker den funktion du har nu ikke ordentligt? Hvis den gør det kan du vel ligeså godt gøre sådan her: <body onLoad="t = window.setInterval('runSlideShow();',slideShowSpeed)"> <img src="pic1.jpg" name="SlideShow"> <a href="java script:skift(40000);">skift til 30 </a> <a href="java script:skift(4000);">skift tilbage</a> <a href="java script:start();">Start</a> <a href="java script:stop();">Stop</a>
Også i starten af scriptet skrive sådan her: var slideShowSpeed = 4000; var t=null; function skift(speed) { slideShowSpeed = speed; window.clearInterval(t); t = window.setInterval("runSlideShow();",slideShowSpeed); } function start() { if(!t) t=window.setInterval("runSlideShow();",slideShowSpeed); } function stop() { if(t) {window.clearInterval(t);t=null} }
og til sidst slette: t = setTimeout('runSlideShow()', slideShowSpeed); nederst i din slideshow-funktion
Jeg gav dig lige point, for det er super fedt det script du har lavet...
uden at presse den for meget. tror du det er muligt at lave en test der følger billedet? så tekten skifter samtidig? måske et nyt Array som kan puttes ind :)
her er det script du har lavet.
<SCRIPT LANGUAGE="JavaScript">
var slideShowSpeed = 4000; var t=null; function skift(speed) { slideShowSpeed = speed; window.clearInterval(t); t = window.setInterval("runSlideShow();",slideShowSpeed); } function start() { if(!t) t=window.setInterval("runSlideShow();",slideShowSpeed); } function stop() { if(t) {window.clearInterval(t);t=null} }
<!-- <!-- Begin // Indstil hastigheden (millisekunder)
// Lad følgende linie forblive som den er var crossFadeDuration = 2; // Billede-filerne var Pic = new Array(); // For at tilføje flere, fortsæt da bare på samme måde
// Lad være med at ændre noget under denne linie var t; var j = 0; var p = Pic.length; var preLoad = new Array(); for (i = 0; i < p; i++) { preLoad[i] = new Image(); preLoad[i].src = Pic[i]; } function runSlideShow() { if (document.all) { document.images.SlideShow.style.filter="blendTrans(duration=2)"; document.images.SlideShow.style.filter="blendTrans(duration=crossFadeDuration)"; document.images.SlideShow.filters.blendTrans.Apply(); } document.images.SlideShow.src = preLoad[j].src; if (document.all) { document.images.SlideShow.filters.blendTrans.Play(); } j = j + 1; if (j > (p - 1)) j = 0;
du behøver ikke se mere på det script.. mange tak for hjælpen. ha en god weekend. ps er det muligt at lave en funktion der gør at når siden åbner (ikke popup)at den viser siden som full screen? lige som hvis man trykker på F11 tasten..
næ hov - nu har jeg lige lavet en tekst løsning - så værsågod ;-) Lav et array med ligeså mange tekster som der er billeder: var Tekst = new Array(); Tekst[0] = 'Dette er billed 1'; Tekst[1] = 'Dette er billed 2'; Tekst[2] = 'Dette er billed 3'; Tekst[3] = 'Dette er billed 4';
Så ændre du lidt i din slideshowfunktion: document.images.SlideShow.src = preLoad[j].src; document.getElementById("SlideShowTekst").innerHTML = Tekst[j];
Og til sidst tilføjer du det her efter billedet: <img src="pic1.jpg" name="SlideShow"><div id="SlideShowTekst">Billede1</div>
---det med fullscreen er så vidt jeg ved kun for popup vinduer, men prøv at søg herinde på eksperten så kan det være du finder noget. Det har sikkert været oppe før ;-)
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.