/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Uendelig serie af billedskift.
Fra : Christian Heyn


Dato : 23-05-05 13:15

Hej Alle

Jeg står og mangler en løsning på følgende problem:

På min side skal 20 billeder rotere i en uendelig lykke således
at et billede udskiftes med et nyt hvert 3. sekund. så længe
siden er åben.
Jeg har lagt de 20 billeder i et array. pic[0] = img00.jpg;
pic[1] = img02.pic; ...

Jeg syntes at jeg har prøvet med alle mulige kombinationer af
setTimeout. Det nærmeste jeg er kommet en løsning er en uendelig
while-løkke. men billedskiftet standser efter 1 skift, og det
sidste billede i serien vises.

Har nogle et forslag til en løsning på min krise?

På forhånd tak

Christian

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jens Gyldenkærne Cla~ (23-05-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 23-05-05 13:25

Christian Heyn skrev:

> Jeg syntes at jeg har prøvet med alle mulige kombinationer af
> setTimeout. Det nærmeste jeg er kommet en løsning er en uendelig
> while-løkke. men billedskiftet standser efter 1 skift, og det
> sidste billede i serien vises.

Må vi se dit forsøg (link til siden). Har du tjekket om der kommer
javascriptfejlmeddelelser fra browseren?

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Kasper Leth Jensen (23-05-2005)
Kommentar
Fra : Kasper Leth Jensen


Dato : 23-05-05 13:36

[...]Christian Heyn wrote:

> På min side skal 20 billeder rotere i en uendelig lykke således
> at et billede udskiftes med et nyt hvert 3. sekund. så længe
> siden er åben.
> Jeg har lagt de 20 billeder i et array. pic[0] = img00.jpg;
> pic[1] = img02.pic; ...

> Jeg syntes at jeg har prøvet med alle mulige kombinationer af
> setTimeout. Det nærmeste jeg er kommet en løsning er en uendelig
> while-løkke. men billedskiftet standser efter 1 skift, og det
> sidste billede i serien vises.

While() vil udføre dte hele og så vise resultatet alt for hurtigt til at
du kan se hvad der sker, derfor ser det ud til at den springer direkte
til sidste billede.

> Har nogle et forslag til en løsning på min krise?

Ja, prøv noget i stil:

interval = 2000; // Millisekunder mellem billede-skiftene
id = 0;
pic = Array();
pic[0] = 'img00.jpg';
pic[1] = 'img02.pic';
[resten af billederne]

function changePic (id) {
   document.getElementById('mit_billede').src = pic[id]
   if ( id == pic.length) {
      id = 0;
   } else {
      id++;
   }
   setTimeout('changePic (' + id + ')', interval);
}
changePic(id);



Har ikke afprøvet funktionen, men det er ca. så'n det bør gøres

Christian Heyn (23-05-2005)
Kommentar
Fra : Christian Heyn


Dato : 23-05-05 15:26

> Ja, prøv noget i stil:
>
> interval = 2000; // Millisekunder mellem billede-skiftene
> id = 0;
> pic = Array();
> pic[0] = 'img00.jpg';
> pic[1] = 'img02.pic';
> [resten af billederne]
>
> function changePic (id) {
>    document.getElementById('mit_billede').src = pic[id]
>    if ( id == pic.length) {
>       id = 0;
>    } else {
>       id++;
>    }
>    setTimeout('changePic (' + id + ')', interval);
> }
> changePic(id);
>
>
>
> Har ikke afprøvet funktionen, men det er ca. så'n det bør gøres

Hej Kasper

Fantastisk!!! Problemet er løst. Jeg vidste ikke at uendelige rekursive
funktioner er tilladt. Jeg måtte dog lige ændre funktionen til

function changePic (id) {
document.getElementById('mit_billede').src = pic[id];
id++;
if ( id == pic.length) {
id = 0;
}
setTimeout('changePic(' + id + ')', interval);
}

men det er jo småting. Mange tak skal du have.

God sommer fra Christian

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Christian Heyn (23-05-2005)
Kommentar
Fra : Christian Heyn


Dato : 23-05-05 15:57

Kasper Leth Jensen wrote in dk.edb.internet.webdesign.clientside:
> [...]Christian Heyn wrote:
>
> > På min side skal 20 billeder rotere i en uendelig lykke således
> > at et billede udskiftes med et nyt hvert 3. sekund. så længe
> > siden er åben.
> > Jeg har lagt de 20 billeder i et array. pic[0] = img00.jpg;
> > pic[1] = img02.pic; ...
>
> > Jeg syntes at jeg har prøvet med alle mulige kombinationer af
> > setTimeout. Det nærmeste jeg er kommet en løsning er en uendelig
> > while-løkke. men billedskiftet standser efter 1 skift, og det
> > sidste billede i serien vises.
>
> While() vil udføre dte hele og så vise resultatet alt for hurtigt til at
> du kan se hvad der sker, derfor ser det ud til at den springer direkte
> til sidste billede.
>
> > Har nogle et forslag til en løsning på min krise?
>
> Ja, prøv noget i stil:
>
> interval = 2000; // Millisekunder mellem billede-skiftene
> id = 0;
> pic = Array();
> pic[0] = 'img00.jpg';
> pic[1] = 'img02.pic';
> [resten af billederne]
>
> function changePic (id) {
>    document.getElementById('mit_billede').src = pic[id]
>    if ( id == pic.length) {
>       id = 0;
>    } else {
>       id++;
>    }
>    setTimeout('changePic (' + id + ')', interval);
> }
> changePic(id);
>
>
>
> Har ikke afprøvet funktionen, men det er ca. så'n det bør gøres

Hej Kasper

Det lykkedes. Vidste ikke uendelige rekursive funktioner er tilladt.
Måtte ændre til:

function changePic (id) {
id++;
document.getElementById('mit_billede').src = pic[id];
if ( id == pic.length) {
id = 0;
}
setTimeout('changePic (' + id + ')', interval);
}

Men det er jo småting - Tak for tipet.

God sommer fra Christian

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (23-05-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 23-05-05 16:14

Christian Heyn skrev:

> Det lykkedes. Vidste ikke uendelige rekursive funktioner er tilladt.

Det ved jeg heller ikke om de er - men jeg kan ikke se nogen grund til
at bruge dem her.


> function changePic (id) {
> id++;
> document.getElementById('mit_billede').src = pic[id];
> if ( id == pic.length) {
> id = 0;
> }
> setTimeout('changePic (' + id + ')', interval);
> }

Jeg ville foreslå følgende (utestet):

<script type="text/javascript">
// Variabel til at holde styr på iterationerne
var id = 0;
// intervallet
var interval = 2000;
var pic = Array();
var pic[0] = 'img00.jpg';
var pic[1] = 'img02.pic';
[resten af billederne]

function changePic(){
document.getElementById('mit_billede').src = pic[id];
id++;
if ( id == pic.length) {
id = 0;
}
}
</script>
....
<body onload="setTimeout('changePic()', interval)">

Ideen er at nummeret på billedet ikke skal med i kaldet til setTimeout,
men i stedet ligge som en global variabel. Onload-funktionen sætter
scriptet i gang, og så burde det køre af sig selv.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Kasper Leth Jensen (24-05-2005)
Kommentar
Fra : Kasper Leth Jensen


Dato : 24-05-05 12:05

Jens Gyldenkærne Clausen wrote:
>>function changePic (id) {
>> id++;
>> document.getElementById('mit_billede').src = pic[id];
>> if ( id == pic.length) {
>> id = 0;
>> }
>> setTimeout('changePic (' + id + ')', interval);
>>}
>
>
> Jeg ville foreslå følgende (utestet):
>
> <script type="text/javascript">
> // Variabel til at holde styr på iterationerne
> var id = 0;
> // intervallet
> var interval = 2000;
> var pic = Array();
> var pic[0] = 'img00.jpg';
> var pic[1] = 'img02.pic';
> [resten af billederne]
>
> function changePic(){
> document.getElementById('mit_billede').src = pic[id];
> id++;
> if ( id == pic.length) {
> id = 0;
> }
> }
> </script>
> ...
> <body onload="setTimeout('changePic()', interval)">

Ja, i bund og grund det samme, men kan godt se hvad du mener (:

// Leth

Søg
Reklame
Statistik
Spørgsmål : 177495
Tips : 31968
Nyheder : 719565
Indlæg : 6408489
Brugere : 218886

Månedens bedste
Årets bedste
Sidste års bedste