Javascript slide funktion går hurtigere og hurtigere..

Tags:    javascript css

<< < 12 > >>
Hej derude.

Jeg har fået stykket dette lille script sammen til et billed-galleri som jeg arbejder på. Meningen er at når man klikker på mit billede så skal et stort billede slide frem og vises.

Jeg har lavet et lille php script som kalder javascript funktionen pic_show_load når man klikker på billedet og sender variablen pic_show_var for hvilket billede der skal vises, var_width for billedets bredde og var_height for billedets højde.

Det virker også umiddelbart helt fint, bortset fra, at hver gang jeg klikker på et nyt billedede i galleriet, så slider den hurtigere og hurtigere...

Som om millisekunderne i min setInterval stiger.

Jeg har prøvet med noget clearInterval, men forgæves.

Kan nogen fortælle mig hvad der går galt her?

Fold kodeboks ind/udCSS kode 


Fold kodeboks ind/udJScript kode 


Sorry at mit kode er pænt rodet, men er ret ny i det her.

På forhånd tak.



Indlæg senest redigeret d. 10.09.2013 10:31 af Bruger #13473
12 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Din logik tager fejl.

fjern var i linien: var min_interval = setInterval("pic_show_slide(var_height_var)", 20);

Fold kodeboks ind/udJScript kode 




Indlæg senest redigeret d. 10.09.2013 12:53 af Bruger #17081
du fjerner aldrig setInterVal funktionen ... så den bliver ved med, at køre og der bliver lavet en ny hvergang du trykker på billedet. Det er derfor det kører hurtigere og hurtigere.



Det kom jeg også nogenlunde frem til...

Men hvor skal jeg bruge min clearInterval henne?

Hvis jeg nu giver min interval en variabel: min_interval,
og så bruger en clearInterval(min_interval); under function pic_show_unload så vil den heller ikke virke.

Den cleare ikke, og alt hvad jeg skriver efter clearInterval under function pic_show_unload() vil ikke længere virke.

Hvis jeg så putter min setInterval uden for funktionen pic_show_load, så vil den virke, men så starter den jo ikke længere et nyt interval hver gang jeg trykker på et nyt billede.

??

Så hvor vil du foreslå at jeg smider min clearInterval hen?



du er nødt til, at lave din min_interval global eller i hvertfald i et scope der gør, at din clearInterval kan få fat i den.

Men jeg ville nok gøre det før unload. evt. der hvor du checker om billedet har den rigtige størrelse.



Nu har jeg prøvet at sætte den clearInterval ind næsten over alt, men jeg kan virkelig ikke få det til...

Min logik fortæller mig at det burde virke hvis jeg cleare intervallet lige før jeg setter intervallet igen.. altså sådan:

clearInterval(min_interval);
var min_interval = setInterval("pic_show_slide(var_height_var)", 20);

Men det gør ingen forskel, den går stadig hurtigere og hurtigere..



Ahh perfekt, takker! :D

... Næste spørgsmål :p

Hvordan får jeg min setInterval til at køre hurtigere end 1?

jeg har prøvet:

setInterval("pic_show_slide(var_height_var)", 0.1);

og har prøvet:

setInterval("pic_show_slide(var_height_var)", 1/100);

og har prøvet at dividere 1/100 i en variabel og sætte ind i stedet, men den går ikk rigtigt hurtigere...

Hvordan skriver jeg det korrekt?

På forhånd tak.



hurtigere end 1 hvad ? 1 = 1 tusindedel af et sekund. 1000 = 1 sekund ... så jeg kan ikke rigtigt forestille mig hvorfor du vil have det hurtigere.

Hvis den skal flytte sig hurtigere kan du jo ændre på din +=5 og sætte den til +=7



Problemet med +=5 til +=7 er at jeg jo lægger 7 til denne_pic_slide hver gang denne_pic_slide < var_height.

var_height udgør billedets højde.

Men hvis billedet er fx 500 høj og denne_pic_slide er nået til fx 495, så lægger den 7 til og bliver til 502, og dermed laver min height på billedet for stor.

Så jeg håbede på at man kunne ændre til +=1 i stedet for +=7 og så ganske enkelt sætte setIntervallet til at køre scriptet hurtigere end 1 tusindedel af et sekund, fx 0.1 tusindedel af et sekund...

Ved i grunden ikke hvorfor 1 tusindedel af et sekund ikke er hurtigt nok, det burde det være, men det går dog stadig for langsomt...

Kan godt se hvorfor det nok ikke er en god løsning jeg er inde på her..

Er der andre måder jeg kan forhindre min denne_pic_slide i at overstige 500?



du kunne lave procent ( % ) i stedet for pixel ;)



Let og elegant men virker ikk helt dog..

Har ændret:

if (denne_pic_fade_up < var_height)

til:

if (denne_pic_fade_up < 100)

og ændret til % i stedet for pixel, men det er som om den justerer størrelsen efter det største billede i mit galleri og ikke efter det enkelte billede jeg trykker op...

??

Tror du er inde på noget med det %, men jeg stiller det nok forkert op, tænker jeg..



<< < 12 > >>
t