Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    menu a tendina che non si chiude

    ciao a tutti,
    ho trovato questo script che mi permette di creare un semplice menu a tendina..

    [CODE]
    <SCRIPT type=text/javascript>
    <!--
    function montre(id) {
    var d = document.getElementById(id);
    for (var i = 1; i<=10; i++) {
    if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display= 'none';}
    }if (d) {d.style.display='block';}
    }
    //-->
    </SCRIPT>

    e in html

    codice:
    <DL>
    <DT onmouseover="javascript:montre('smenu1');">MENU 
    <DD id="smenu1">
    <UL>
    <LI>voce1 
    <LI>voce2
    <LI>voce3 
    <LI>voce4   
    </LI>[/list]
    </DD>
    </dt>
    </DL>
    è ottimo solo che, una volta fuori dal menu, la tendina non si chiude...
    è possibile farla chiudere in qualche modo?

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Devi mettere piu' di un menu per vedere l'effetto di chiusura.

    aggiungi <BODY onload="montre()"> per averli tutti chiusi all'inizio.

    ciao
    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
    Originariamente inviato da br1
    Devi mettere piu' di un menu per vedere l'effetto di chiusura.

    ciao
    ne ho 5...

    se vado sul 2, lo apro e chiudo l'1...e così via...

    quello che manca è la possibilità chiuderli tutti, cioè tornare alla situazione iniziale con tutti chiusi, poichè l'ultimo aperto rimane sempre aperto...

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Chidi tutto

    Altrimenti spiega meglio quando vuoi che si chiudano...

    ciao
    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

  5. #5
    se io navigo nei sottomenu di una "tendina" qualsiasi, non clicco su nessuna voce ed esco, la tendina resta aperta e nn si chiude più.

  6. #6

  7. #7
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Non hai precisato il quando... ovvero l'evento al quale vuoi legare la chiusura.

    Mi spiego meglio... a prendere alla lettera quanto hai scritto nel tuo penultimo messaggio il menu dovrebbe chiudersi solo se precedentemente hai "sorvolato" gli elementi del sottomenu... e se questa operazione non l'hai fatta?
    Esistono altri particolari di cu tener conto, ma ti propongo un intervento minimo per fare qualcosa che somiglia a quello che chiedi:

    codice:
    <script>
    <!--
    function montre(id) {
    var d = document.getElementById(id);
    for (var i = 1; i<=10; i++) {
    	if (document.getElementById('smenu'+i)) {
    		document.getElementById('smenu'+i).style.display='none';
    	}
    }
    if (d) {d.style.display='block';}
    }
    var chiudi;
    function nascondi() {
    	if(chiudi) {
    		clearTimeout(chiudi);
    		chiudi = false;
    	}
    	chiudi = setTimeout("montre()",3000);
    }
    //-->
    </SCRIPT>
    
    ...
    
    <DL>
    <DT onmouseover="montre('smenu1');" onmouseout="nascondi()">MENU 
    
    ...
    ciao
    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
    è proprio quello che chiedevo..
    scusa se mi sono spiegato male e grazie della pazienza, sono un novellino di script e sto cercando di capirci qualcosa ..

    mi spiegheresti una cosa?:

    var chiudi;
    function nascondi() {
    if(chiudi) {
    clearTimeout(chiudi);
    chiudi = false;
    }
    chiudi = setTimeout("montre()",3000);
    }

    tu dichiari una variabile chiudi e crei una funzione..

    in quell'IF che dici, cioè l'if dello script è stano, if(chiudi) che significa? if che cosa?..

    poi, se ho capito bene, con setTimeout("montre()",3000); dici di "chiudere" o "bloccare" la funzione montre dopo 3000 (cosa )?

    o sbaglio...

    oh, grazie 1000 davvero...

    e

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.