Visualizzazione dei risultati da 1 a 8 su 8

Discussione: fermare Timeout

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074

    fermare Timeout

    Ho una pagina con due livelli nascosti, che vengono mostrati uno dopo l'altro via JS.
    Queste le function:
    Codice PHP:
     function closefly() {     
    var 
    tmdue setTimeout("MM_showHideLayers('fly2','','hide')" ,8000); 

    function 
    openfly2() {     
    closefly();     
    setTimeout("MM_showHideLayers('fly1','','hide','fly2','','show')" ,4000); 

    function 
    openfly() {     
    setTimeout("MM_showHideLayers('fly1','','show')" ,2000);     
    openfly2(); 

    La function openfly() viene chiamata onload. Dopo 2 secondi appare il livello fly1, dopo 4 sec. scompare ed appare il secondo livello fly2.
    Tutto ok.
    In entrambe i livelli, c'è però un link chiudi che richiama questa function:
    Codice PHP:
    function realclosefly() {     
    MM_showHideLayers('fly1','','hide','fly2','','hide');

    Se viene utilizzato per chiudere (nascondere) mentre è visibile il primo dei due livelli, il risultato è che dopo 4 secondi il secondo livello viene comunque mostrato. Ciò perchè intanto è comunque partita la function closefly();
    Allora, ho aggiunto alla function realclosefly() la stringa:
    Codice PHP:
    clearTimeout(tmdue); 
    , che dovrebbe fermarne l'esecuzione. Invece continua ad andare, e dopo 4 sec. appare lo stesso il secondo livello...

    Perchè? Come mai non si ferma??
    metatad
    graphic & web design

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Perché devi operare su sul timer della funzione openfly2
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Giusto!... Distrazione....
    Grazie.
    metatad
    graphic & web design

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    No, continua a non andare...
    Codice PHP:
    function realclosefly() {
        
    MM_showHideLayers('fly1','','hide','fly2','','hide');
        
    clearTimeout(tmuno);
    }
    function 
    closefly() {
        
    setTimeout("MM_showHideLayers('fly2','','hide')" ,8000);
    }
    function 
    openfly2() {
        
    closefly();
        var 
    tmuno setTimeout("MM_showHideLayers('fly1','','hide','fly2','','show')" ,4000);
    }
    function 
    openfly() {
        
    setTimeout("MM_showHideLayers('fly1','','show')" ,2000);
        
    openfly2();

    Eppure non va...
    metatad
    graphic & web design

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Rendi la variabile globale:
    var tmuno;
    poi la setti nella funzione
    tmuno = setTimeout
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Codice PHP:
    var tmuno "";
    function 
    realclosefly() {
        
    MM_showHideLayers('fly1','','hide','fly2','','hide');
        
    clearTimeout(tmuno);
    }
    function 
    closefly() {
        
    setTimeout("MM_showHideLayers('fly2','','hide')" ,8000);
    }
    function 
    openfly2() {
        
    closefly();
        var 
    tmuno setTimeout("MM_showHideLayers('fly1','','hide','fly2','','show')" ,4000);
    }
    function 
    openfly() {
        
    setTimeout("MM_showHideLayers('fly1','','show')" ,2000);
        
    openfly2();

    Niente da fare....
    metatad
    graphic & web design

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    stai ancora utilizzando la variabile locale invece di quella globale

    codice:
    var tmuno = ""; 
    function realclosefly() { 
        MM_showHideLayers('fly1','','hide','fly2','','hide'); 
        clearTimeout(tmuno); 
    } 
    function closefly() { 
        setTimeout("MM_showHideLayers('fly2','','hide')" ,8000); 
    } 
    function openfly2() { 
        closefly(); 
        tmuno = setTimeout("MM_showHideLayers('fly1','','hide','fly2','','show')" ,4000); 
    } 
    function openfly() { 
        setTimeout("MM_showHideLayers('fly1','','show')" ,2000); 
        openfly2(); 
    }

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Giusto... ho lasciato un var di troppo...
    Grazie
    metatad
    graphic & web design

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.