• User Attivo

    javascript e DIV a scomparsa... strano problema

    Salve a tutti.
    Ho creato un piccolo javascript per mostrare/nascondere un DIV con uno scorrimento laterale.
    Qua trovate un esempio grezzo: cliccando sulla scritta "vedi dettagli" si può nascondere/mostrare il riquadro centrale. Lo script funziona, il problema è che l'animazione è talmente veloce che il riquadro, anziché scrollare gradualmente, sembra sparire "di botto".
    Se date un'occhiata al codice, vedete che la funzione si limita semplicemente a modificare la larghezza del div fino a raggiungere l'estensione minima o massima (passata come parametro).

    Per rallentare l'esecuzione, ho provato ad inserire all'interno dei cicli while un ulteriore ciclo che ha il solo scopo di incrementare una variabile fittizia chiamata "indice"; in pratica, ho modificato il codice da così:

    
        while (attuale > minimo)
             {
             attuale = attuale - incdec;
             attualesin = attualesin + incdec;
             nomeoggetto.style.width = attuale + 'px';
             nomeoggetto.style.left = attualesin + 'px';
            }
    
    ```a così:
    
    
    while (attuale > minimo)
         {
         attuale = attuale - incdec;
         attualesin = attualesin + incdec;
         nomeoggetto.style.width = attuale + 'px';
         nomeoggetto.style.left = attualesin + 'px';
         indice = 1;
         while (indice < 20000)
             {
             indice++;
             }
         }
    
    Il problema, come potete vedere, è che la "pausa" si manifesta solo al primo ciclo, e gli altri frame vengono eseguiti immediatamente, con la conseguenza che il DIV sembra ancora scomparire all'improvviso.
    Perché succede questo? Ho ricontrollato decine di volte ma il secondo ciclo WHILE mi sembra posizionato correttamente all'interno del primo. :bho:
    
    Spero di essermi spiegato in maniera chiara (dato che non sono assolutamente esperto in materia) e confido in un vostro aiuto, perché rischio di impazziere :x:D
    
    :ciauz:

  • User Attivo

    Risolto utilizzando la funzione setTimeout 😉

    :ciauz: