Visualizzazione dei risultati da 1 a 8 su 8

Discussione: aprire div lentamente

  1. #1
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427

    aprire div lentamente

    ciao a tutti.

    Tempo fa mi avete passato questo script che non ho potuto testare sino ad oggi.
    Mi da purtropo un errore che non capisco...


    Errore: d has no properties
    File sorgente: /liv.htm
    Riga: 35


    <script>
    // Suppongo che il div abbia altezza 0px
    var inc = 5; // incremento graduale in pixel
    var d = document.getElementById('divlenta');
    function showslowly() {
    h = d.style.height;
    h += inc;
    d.style.height = h + "px";
    setTimeout("showslowly()", 100); // 100 millisecondi
    }
    </script>

    <div id="divlenta" style="width:200px;height:0px;background-color:#000">
    fff
    </div>



    test</p>

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    ci sono diversi errori:

    var d = document.getElementById('divlenta');

    deve essere definita dentro la funzione

    Per leggere l'altezza del div usa

    h = d.offsetHeight;


    prova così:

    codice:
    function showslowly() {
       var inc = 5; // incremento graduale in pixel
       var d = document.getElementById('divlenta');
    
       h = d.offsetHeight;
       h += inc;
       d.style.height = h + "px";
    
       setTimeout("showslowly()", 100); 
    }

    Attento però che non stai definendo una condizione per la terminazione dello script... questo apre il div a dismisura

    ciao
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    Ciao,
    si nfatti lo avevo pensato.. ma come posso dare un valore di fine?

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    molto semplicemente con un controllo sull'altezza del div ad ogni chiamata della funzione


    codice:
    var cll;
    
    function showslowly() {
    
       h = d.offsetHeight;
       if (h > 300) { // se l'altezza supera i 300 pixels termina
          clearTimeout(cll);
          return;
       }
    
       var inc = 5; // incremento graduale in pixel
       var d = document.getElementById('divlenta');
    
       h += inc;
       d.style.height = h + "px";
    
    
       cll = setTimeout("showslowly()", 100); 
    }
    ciao
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    Si ripropone lo stesso errore:

    Errore: d has no properties
    File sorgente: /liv.htm
    Riga: 35

    ma stavolta la riga 35 è :

    h = d.offsetHeight;


    <script>
    var cll;

    function showslowly() {

    h = d.offsetHeight;
    if (h > 200) { // se l'altezza supera i 300 pixels termina
    clearTimeout(cll);
    return;
    }

    var inc = 5; // incremento graduale in pixel
    var d = document.getElementById('divlenta');
    h += inc;
    d.style.height = h + "px";


    cll = setTimeout("showslowly()", 100);
    }
    </script>
    <div id="divlenta" style="width:200px;height:0px;>
    fff
    </div>



    test</p>

  6. #6
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    hai ragione, ho dimenticato di spostare anche un'altra riga:

    codice:
    var cll;
    
    function showslowly() {
    
       var d = document.getElementById('divlenta');
       h = d.offsetHeight;
    
       if (h > 300) { // se l'altezza supera i 300 pixels termina
          clearTimeout(cll);
          return;
       }
    
       var inc = 5; // incremento graduale in pixel
    
       h += inc;
       d.style.height = h + "px";
    
    
       cll = setTimeout("showslowly()", 100); 
    }
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  7. #7
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    carina....

    grazie mille...

  8. #8
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    ma per fare la funzione opposta ( riportarla a 0 )
    dovrei creare un altra funzione con l'incremento negativo?

    h -= inc;
    d.style.height = h + "px";

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.