Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di leonix
    Registrato dal
    Jul 2005
    Messaggi
    18

    malfunzionamento menu a tendina

    Salve a tutti,
    vi allego il codice che sto preparando e che non riesco a far funzionare.

    Dovrebbe rappresentare un classico menu a tendina che si apre quando il mouse ci passa sopra, e si chiude quando il mouse esce dalla tendina o dal pulsante soprastante che lo ha generato.

    Purtroppo non riesco a far rimanere aperta la tendina, il punto critico nel codice è segnalato da un commento. Come risolvo questo problema?

    Sto sviluppando il menu su Chrome e Explorer e la visualizzazione è leggermente diversa: la differenza è accettabile ma sarebbe meglio se fossero identici. Sugli altri browser si hanno problemi di compatibilità?

    Grazie per eventuali risposte.

    codice:
    <html>
    <head>
    <style type='text/css'>
    body{
    	margin:0px;
    }
    .menu{
    	background-color:black;
    	width:100%;
    	padding:5px;
    }
    .menu-parent{
    	background-color:#555;
    	padding:5px;
    	width:150px;
    	display:inline-block;
    	text-align:center;
    }
    .menu-child{
    	background-color:#aaa;
    	padding:5px;
    	position:absolute;
    	display:none;
    	top:-500px;
    }
    </style>
    <script language='Javascript'>
    function setMenuChildren(){
    	var parentCounter=0;
    	while(document.getElementById('menu-parent-'+(++parentCounter))!=undefined){
    		if(document.getElementById('menu-child-'+(parentCounter))!=undefined){
    			var child = document.getElementById('menu-child-'+(parentCounter));
    			var parent= document.getElementById('menu-parent-'+(parentCounter));
    			child.mouseIsOver=false;
    			child.onmouseover = function(){
    									this.mouseIsOver = true;
    								}
    			child.onmouseout = function(){
    									this.mouseIsOver = false;
    									this.style.display="none";
    								}
    			parent.onmouseover = function(){
    									showChild(this);
    								}
    			parent.onmouseout = function(){
    									hideChild(this);
    								}
    			child.style.top =parent.offsetTop +parent.offsetHeight;
    			child.style.left=parent.offsetLeft;
    			if(child.offsetWidth<parent.offsetWidth)
    				child.style.width=parent.offsetWidth;
    		}
    	}
    
    }
    
    function showChild(elem){
    	id=parseInt(elem.id.match(/\d+/));
    	if(document.getElementById('menu-child-'+id)!=undefined){
    		document.getElementById('menu-child-'+id).style.display="inline";
    	}
    }
    
    function hideChild(elem){
    	id=parseInt(elem.id.match(/\d+/));
    
    /////////// il seguente controllo non sembra funzionare correttamente//////////////
    	if(document.getElementById('menu-child-'+id)!=undefined){
    		if(!(document.getElementById('menu-child-'+id).mouseIsOver)){
    			document.getElementById('menu-child-'+id).style.display="none";
    		}
    	}
    }
    
    </script>
    </head>
    
    <body onload='setMenuChildren()'>
    
    <div class='menu'>
    	<span class='menu-parent' id='menu-parent-1'>parent</span>
    	<span class='menu-parent' id='menu-parent-2'>parent 2</span>
    	<span class='menu-parent' id='menu-parent-3'>parent</span>
    </div>
     
    <div class='menu-child' id='menu-child-2'>a
    b
    c
    d
    e</div>
    <div class='menu-child' id='menu-child-3'>a
    b
    c</div>
    
    </body>
    </html>

  2. #2
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Ciao. Come puoi vedere da quest'esempio completo di menu a tendina: https://developer.mozilla.org/@api/d...down_menu.html ... non serve javascript, bastano i css.

    Magari da' anche una guardata qua: https://developer.mozilla.org/en/CSS...pseudo-classes

  3. #3
    Utente di HTML.it L'avatar di leonix
    Registrato dal
    Jul 2005
    Messaggi
    18
    grazie molto interessante, credo proprio che lo svilupperò così come proponi.

    però se salta fuori l'errore dal mio codice, tanto per soddisfare il mio appetito di risposte, ne sarei comunque molto felice

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.