Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Javascript - delay in javascript
Forum - Javascript - delay in javascript

Avatar
XBarboX (Member)
Guru


Messaggi: 945
Iscritto: 31/12/2008

Segnala al moderatore
Postato alle 11:49
Venerdì, 21/08/2009
Come si mette un delay in javascript che non sia la funzione setTimeout?(mi da dei problemi)

PM Quote
Avatar
XBarboX (Member)
Guru


Messaggi: 945
Iscritto: 31/12/2008

Segnala al moderatore
Postato alle 11:58
Venerdì, 21/08/2009
Il problema è il seguente:

andate sul sito http://www.sapientia.altervista.org
passate il bottone sopra il bottone "animali" e noterete che il menu non scende!


questo è il codice sorgente dello script:
Codice sorgente - presumibilmente Javascript

  1. function AllungaMenu(nome){
  2.  
  3. x = 23 - 1;
  4. s = "";
  5. m = 300;
  6.  
  7. do{
  8. x = x + 1;
  9. s = "";
  10. s = x;
  11. s = s + "px";
  12. setTimeout('document.getElementById(' + nome + ').style.height = "' + s + '"',100);
  13. }while(x<m);
  14. }


Ultima modifica effettuata da XBarboX il 21/08/2009 alle 12:05
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 22:17
Sabato, 22/08/2009
Questo perchè il concetto è sbagliato; non puoi iterare la setTimeout in questa maniera, così facendo non fà altro che impostare N (dove N è il numero di volte che il ciclo viene ripetuto) timeouts che vengono eseguiti allo stesso momento (o quasi). Ovviamente l'effetto è che dopo 100 millisecondi solamente l'ultimo timeout viene eseguito (e degli altri N-1 non si vede l'effetto).



Il mio blog: https://piero.dev
PM Quote
Avatar
XBarboX (Member)
Guru


Messaggi: 945
Iscritto: 31/12/2008

Segnala al moderatore
Postato alle 13:13
Domenica, 23/08/2009
Testo quotato

Postato originariamente da pierotofy:

Questo perchè il concetto è sbagliato; non puoi iterare la setTimeout in questa maniera, così facendo non fà altro che impostare N (dove N è il numero di volte che il ciclo viene ripetuto) timeouts che vengono eseguiti allo stesso momento (o quasi). Ovviamente l'effetto è che dopo 100 millisecondi solamente l'ultimo timeout viene eseguito (e degli altri N-1 non si vede l'effetto).




Scusa adesso ho aggiornato il sito e non ha più quel codice.
Comunque come lo implementeresti tu?

PM Quote
Avatar
NewAge (Normal User)
Pro


Messaggi: 153
Iscritto: 23/08/2009

Segnala al moderatore
Postato alle 17:58
Domenica, 23/08/2009
Se inizi ad usare javascript, ti consiglio moolto vivamente di utilizzarne una libreria, in parole povere ti consiglio jQuery. All'inizio sarà un po' complicato capirne il funzionamento ma poi andrai alla grande, senza contare il fatto che avrai eliminato tutti i problemi di compatibilità browser

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 18:18
Domenica, 23/08/2009


Il mio blog: https://piero.dev
PM Quote