Avatar billede cmau Nybegynder
12. december 2006 - 17:23 Der er 13 kommentarer og
1 løsning

stoppe en funktion.

Jeg har to funktioner som ikke må kører på samme tid så fucker alt.

hvordan kan jeg så stoppe den funktion der er i gang og starte den man klikkede på?

En funktion som hedder reduceimage(); og en expanimage();
Avatar billede coderdk Praktikant
12. december 2006 - 17:34 #1
Brug en slags semafor, f.eks.:

<script type="text/javascript">
  var running = 0;

  function reduceimage()
  {
    if ( running == 0 )
    {
        running = 1;
        // Din kode
        running = 0;
    }
  }

  function expanimage()
  {
    if ( running == 0 )
    {
        running = 1;
        // Din kode
        running = 0;
    }
  }
</script>
Avatar billede coderdk Praktikant
12. december 2006 - 17:35 #2
Ja, den stopper ikke funktionen, men forhindrer en at starte mens den anden kører...
Avatar billede cmau Nybegynder
12. december 2006 - 17:38 #3
Jamen vil helst hvis man kunne stoppe, måske med reduceimage.stop() eller sådan noget.
Avatar billede cmau Nybegynder
12. december 2006 - 17:45 #4
Måske ville det bedste være at bygge dem ind i hinanden, men kan simpelthen ikke få det til at virke så.
Funktionene checkway finder ud af om billedet skal blive større eller mindre.


            function checkway() {
                width = document.getElementById('viewedimage').offsetWidth;
                if(width > 599) {
                    reduceimage();
                }
                if(width < 109) {
                    expanimage();
                }
            }
            function reduceimage() {
                width = document.getElementById('viewedimage').offsetWidth;
                width = width - 15;
                if(width > 100) {
                    document.getElementById('viewedimage').style.width = width + "px";
                    setTimeout("reduceimage()",1);
                } else {
                    document.getElementById('comments').innerHTML = 'sdf';
                    //document.getElementById('viewedimage').onclick = 'expanimage();';
                }
            }
            function expanimage() {
                document.getElementById('comments').innerHTML = '';
                width = document.getElementById('viewedimage').offsetWidth;
                width = width + 15;
                if(width < 600) {
                    document.getElementById('viewedimage').style.width = width + "px";
                    setTimeout("expanimage()",1);
                }
            }
Avatar billede coderdk Praktikant
12. december 2006 - 17:54 #5
Du kan sætte en global variabel der angiver hvilken funktion der er blevet kaldt, og stoppe udførslen hvis det ikke er den korrekte funktion... Husk dog at resette den ;)

Måske:

            var called = '';
            function reduceimage() {
                if ( called == 'reduceimage' || called == '' )
                {
                    called = 'reduceimage';
                    width = document.getElementById('viewedimage').offsetWidth;
                    width = width - 15;
                    if(width > 100) {
                        document.getElementById('viewedimage').style.width = width + "px";
                        setTimeout("reduceimage()",1);
                    } else {
                        document.getElementById('comments').innerHTML = 'sdf';
                        //document.getElementById('viewedimage').onclick = 'expanimage();';
                        called = '';
                    }
                }
            }
            function expanimage() {
                if ( called == 'expanimage' || called == '' )
                {
                    called = 'expanimage';
                    document.getElementById('comments').innerHTML = '';
                    width = document.getElementById('viewedimage').offsetWidth;
                    width = width + 15;
                    if(width < 600) {
                        document.getElementById('viewedimage').style.width = width + "px";
                        setTimeout("expanimage()",1);
                    }
                    else
                    {
                        called = '';
                    }
            }
Avatar billede cmau Nybegynder
12. december 2006 - 18:02 #6
"Husk dog at resette den ;)" hvad mener du med det?
Avatar billede coderdk Praktikant
12. december 2006 - 18:10 #7
Det jeg gør i funktionerne med called = '';
Avatar billede cmau Nybegynder
12. december 2006 - 18:16 #8
det ord resette aner ikke hvad det er
Avatar billede cmau Nybegynder
12. december 2006 - 18:26 #9
Hmm når jeg sætter det på sker der slet ingen ting kan ikke åbne den.
Avatar billede coderdk Praktikant
12. december 2006 - 19:44 #10
Resette = Nulstille
Avatar billede coderdk Praktikant
12. december 2006 - 19:53 #11
Prøv lige:

    var called = '';
    function reduceimage() {
        if ( arguments.length == 0 || called == 'reduceimage' )
        {
            called = 'reduceimage';
            width = document.getElementById('viewedimage').offsetWidth;
            width = width - 15;
            if(width > 100) {
                document.getElementById('viewedimage').style.width = width + "px";
                setTimeout("reduceimage(1)",1);
            } else {
                document.getElementById('comments').innerHTML = 'sdf';
                //document.getElementById('viewedimage').onclick = 'expanimage();';
                called = '';
            }
        }
    }

    function expanimage() {
        if ( arguments.length == 0 || called == 'expanimage' )
        {
            called = 'expanimage';
            document.getElementById('comments').innerHTML = '';
            width = document.getElementById('viewedimage').offsetWidth;
            width = width + 15;
            if(width < 600) {
                document.getElementById('viewedimage').style.width = width + "px";
                setTimeout("expanimage(1)",1);
            }
            else
            {
                called = '';
            }
        }
    }
Avatar billede cmau Nybegynder
12. december 2006 - 20:31 #12
Nu virker det sådan at man ikke kan skifte midt i det hele og hvis den er ved at blive stor eller lille og man skifter billede så skifter det næste billede også :S.. det gjorde den ikke før.

Det skulle helst være sådan at hvis den var ved at blive lille og man trykkede igen stoppede den med at blive lille og startede med at blive stor igen.
Avatar billede cmau Nybegynder
12. december 2006 - 21:03 #13
Nej hvis man tager min kode og skifter side gør den det stadigvæk. Prøv at besøg http://partypic.woox.dk/09-12-06/test.htm og tryk på den første Åben fremviser. Klik derefter på billedet og mens den bliver mindre klik på pilen til højre. Så bliver næste billede også lille. Skal kunne stoppen den på en måde :S
Avatar billede cmau Nybegynder
18. december 2006 - 14:07 #14
Fik lavet noget helt andet med hjælp fra en klassekammart :).. Cleartimeout noget.
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