Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Fermare setTimeout

  1. #1
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,114

    Fermare setTimeout

    Il quadro è il seguente:

    Ci sono delle immagini in sequenza... ma se clicco sull'icona dell'immagine la vado a visualizzare; viene settato un setTimeout per poi togliere questa immagine e tornare alla sequenza (in sottofondo.. difatti le immagini cliccate vengono visualizzate con un div absolute).
    Il problema è che se clicco la visualizzazione dell'immagine si attiva il setTimeout per tornare alla sequenza, ma se prima clicco un'altra immagine da visualizzare questa scompare con il setTimeout della precedente.. e così via!

    Il codice:
    Codice PHP:
    function clifot(pht) {
     
    clearTimeout(cle);
     
    document.getElementById("myfot").innerHTML="<DIV style='width: 500; height: 375; background-image: url(corn_00.jpg);'><TABLE width='100%' style='height: 100%;' cellpadding='0' cellspacing='0'><TR><TD align='center'>[img]"+pht+".jpg[/img]<\/TD><\/TR><\/TABLE><\/DIV>";
      var 
    clesetTimeout(function (){clefot();}, 8000);
    }
    function 
    clefot() {
     
    document.getElementById("myfot").innerHTML="";


  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    codice:
    var cle=false;
    function clifot(pht) { 
     if(cle) clefot(); 
     document.getElementById("myfot").innerHTML="<DIV style='width: 500; height: 375; background-image: url(corn_00.jpg);'><TABLE width='100%' style='height: 100%;' cellpadding='0' cellspacing='0'><TR><TD align='center'>[img]"+pht+".jpg[/img]</TD></TR></TABLE></DIV>"; 
      cle = setTimeout(function (){clefot();}, 8000); 
    } 
    function clefot() { 
     document.getElementById("myfot").innerHTML=""; 
      clearTimeout(cle); 
      cle = false;
    }
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,114
    Analisi logica (grazie ancora!!):
    perchè il mio script non funzionava?:P

    Piccolo dubbio:
    cle = setTimeout(function (){clefot();}, 8000);
    cle = setTimeout("clefot();", 8000);
    Queste due espressioni sono uguali? Funziona ugualmente con la seconda dichiarazione?


  4. #4
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,114
    Originariamente inviato da Igreo
    Analisi logica (grazie ancora!!):
    perchè il mio script non funzionava?:P

    Piccolo dubbio:
    cle = setTimeout(function (){clefot();}, 8000);
    cle = setTimeout("clefot();", 8000);
    Queste due espressioni sono uguali? Funziona ugualmente con la seconda dichiarazione?

    qualcuno sa spiegarmi il perchè clearTimeout non funziona nel mio script e il piccolo dubbio esposto?


  5. #5
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Se usi una variabile locale (definita dentro una funzione) al termine della funzione la variabile non esistera' piu' e quindi non fara' riferimento a nulla al suo successivo uso
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  6. #6
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,114
    Codice PHP:
    var cle;
    function 
    clifot(pht) {
     
    clearTimeout(cle);
     
    document.getElementById("myfot").innerHTML="<DIV style='width: 500; height: 375; background-image: url(corn_00.jpg);'><TABLE width='100%' style='height: 100%;' cellpadding='0' cellspacing='0'><TR><TD align='center'>[img]"+pht+".jpg[/img]</TD></TR></TABLE></DIV>";
      
    clesetTimeout(function (){clefot();}, 8000);
    }
    function 
    clefot() {
     
    document.getElementById("myfot").innerHTML="";

    Questo funzionerebbe allora! :P


  7. #7
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Andrebbe in errore la prima volta perche' cle non e' valorizzato... e chiamerebbe inutilmente la seconda funzione se in questa non lo metti a false.

    Ma un manualetto di logica no?
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  8. #8
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Originariamente inviato da br1

    Ma un manualetto di logica no?
    E perché l' hai letto te basta e avanza
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

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.