Avatar billede jacobs1 Nybegynder
12. februar 2004 - 17:33 Der 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

Pic[0] = 'pic1.jpg'
Pic[1] = 'pic2.jpg'
Pic[2] = 'pic3.jpg'
Pic[3] = 'pic4.jpg'



// 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">
Avatar billede jacobs1 Nybegynder
12. februar 2004 - 18:02 #1
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.
Avatar billede jacobs1 Nybegynder
12. februar 2004 - 18:58 #2
<SCRIPT LANGUAGE="JavaScript">
var b = 4000

function  skift() {
b = 40000;

}

function  skifttilbage() {
b = 4000;

}

<!-- <!-- 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

Pic[0] = 'pic1.jpg'
Pic[1] = 'pic2.jpg'
Pic[2] = 'pic3.jpg'
Pic[3] = 'pic4.jpg'



// 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>
&nbsp;
<a href="#" onClick="skifttilbage();">skift tilbage til 15
</a>
Avatar billede jacobs1 Nybegynder
12. februar 2004 - 18:59 #3
var slideShowSpeed = 4000 i linie hedder selvfølgelig var slideShowSpeed = b
men hvorfor opdatere den ikke og sætter hastiheden til den nye værdi???
Avatar billede skovenborg Nybegynder
12. februar 2004 - 23:37 #4
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å.
Avatar billede jacobs1 Nybegynder
13. februar 2004 - 01:17 #5
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???

på forhånd tak :)
Avatar billede skovenborg Nybegynder
13. februar 2004 - 02:40 #6
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>
&nbsp;
<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
Avatar billede skovenborg Nybegynder
13. februar 2004 - 02:40 #7
nå, skulle i grunden ikke være et svar - men skidt med det ;-)
Avatar billede jacobs1 Nybegynder
13. februar 2004 - 14:31 #8
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

Pic[0] = 'pic1.jpg'
Pic[1] = 'pic2.jpg'
Pic[2] = 'pic3.jpg'
Pic[3] = 'pic4.jpg'


// 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;

}


// Her kan du begynde at ændre igen
-->





</script>
</head>

<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>
&nbsp;
<a href="java script:start();">Start</a>
<a href="java script:stop();">Stop</a>


</body>

</html>

Det er altså også bare i orden hvis du ikke gider se mere på det slideshow :)
Avatar billede skovenborg Nybegynder
13. februar 2004 - 15:13 #9
joo, det skulle vel nok være muligt - men hvor skal den tekst være??? Og skal der også være effekt på den?
Avatar billede jacobs1 Nybegynder
13. februar 2004 - 16:32 #10
det skal bare være tekst, og det kan bare stå under billedet.. men du skal ikke bruge for lang tid på det..
Avatar billede jacobs1 Nybegynder
13. februar 2004 - 17:26 #11
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..
Avatar billede skovenborg Nybegynder
13. februar 2004 - 17:30 #12
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>
Avatar billede skovenborg Nybegynder
13. februar 2004 - 17:34 #13
---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 ;-)
Avatar billede jacobs1 Nybegynder
13. februar 2004 - 20:54 #14
hehe tak alligevel.. så skal det da også bruges. helt perfekt
Endnu engang tak for hjælpen..
Avatar billede skovenborg Nybegynder
13. februar 2004 - 23:57 #15
det var så lidt :-)
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