• Publicidad

Menú desplegable: al clicar un botón también hace clic a sus

Discute todo acerca de JavaScript así como DHTML o la tecnología AJAX.

Menú desplegable: al clicar un botón también hace clic a sus

Notapor yarboblo » 2011-09-22 11:36 @525

He creado un sencillo menú desplegable con listas anidadas. La idea es que al hacer onClick en un elemento de lista, me llame a una función que averiguará el id del elemento de la lista sobre el que se ha hecho clic.

El problema es que si hago clic en un elemento de lista anidada, me muestra el id de éste pero también el de sus ancestros.

¿Alguna solución?

Gracias.

HTML
Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
  2. "http://www.w3.org/TR/html4/strict.dtd">
  3.  
  4. <html>
  5.     <head>
  6.         <title></title>
  7.        
  8.         <link rel="stylesheet" href="estilo.css" type="text/css" media="screen"></link>
  9.         <script type="text/javascript" src="biblioteca.js"></script>
  10.  
  11.     </head>
  12.    
  13.     <body>
  14.        
  15.          <ul id="menu">
  16.                   <li id="boton_Ordenadores" >ORDENADORES
  17.                         <ul id=sub_Ordenadores>
  18.                             <li id="boton_Sobremesas">sobremesas</li>
  19.                             <li id="boton_Portatiles">portatiles</li>
  20.                         </ul>
  21.                     </li>
  22.                     <li id="boton_Tablets">TABLETS</li>
  23.                        
  24.                     <li id="boton_Componentes" >COMPONENTES
  25.                         <ul id=sub_Componentes>
  26.                             <li id="boton_Procesadores">procesadores
  27.                                 <ul id=sub_Procesadores>
  28.                                     <li id="boton_Intel">intel</li>
  29.                                     <li id="boton_Amd">amd</li>
  30.                                     <li id="boton_Ibm">ibm</li>
  31.                                 </ul>
  32.                             </li>
  33.                             <li id="boton_Placas">placas base</li>
  34.                             <li id="boton_Discos">discos duros</li>
  35.                             <li id="boton_Fuentes">fuentes</li>
  36.                         </ul>
  37.                     </li>
  38.                 </ul>
  39.     </body>
  40. </html>
  41.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


JS
Sintáxis: [ Descargar ] [ Ocultar ]
Using javascript Syntax Highlighting
  1. var descens = new Array();
  2. var numdescens;
  3. var idclic;
  4.  
  5. function ObtenDescens(idpadre,tagdescen)
  6. {  
  7.    
  8.  
  9.     descens=document.getElementById(idpadre).getElementsByTagName(tagdescen);
  10.      
  11.     numdescens=descens.length;
  12.    
  13. //alert("num descendientes "+tagdescen+": " + numdescens);
  14.  
  15.    
  16.            
  17.        
  18. }
  19.  
  20. function replegar()
  21. {                                                                              
  22.                                                                                
  23.    ObtenDescens(this.id,"ul")
  24.  
  25.  
  26.      document.getElementById(descens[0].id).style.display='none'
  27.    
  28. }
  29. function desplegar()
  30. {                                                                              
  31.                                                                              
  32.    ObtenDescens(this.id ,"ul")
  33.    
  34.    
  35.     document.getElementById(descens[0].id).style.display="block";
  36.    
  37.    
  38.    
  39. }
  40.  
  41. function quienclic()
  42. {                                                                              
  43.                                                                              
  44.     idclic=this.id
  45.     alert(idclic)
  46. }
  47.  
  48.  
  49.  
  50. window.onload = function()
  51. {
  52.      
  53.    
  54.    
  55.  
  56.      ObtenDescens("menu","li");
  57.      
  58.      for(i=0;i<numdescens;i++)
  59.                 {
  60.                     document.getElementById(descens[i].id).onmouseover = desplegar;
  61.                     document.getElementById(descens[i].id).onmouseout = replegar;
  62.                    
  63.                    document.getElementById(descens[i].id).onclick = quienclic;
  64.                    
  65.                 }
  66.        
  67.      
  68.    
  69.     ObtenDescens("menu","ul");
  70.    
  71.     for(i=0;i<numdescens;i++)
  72.                 {
  73.                     document.getElementById(descens[i].id).style.display="none";
  74.                 }
  75.      
  76.    
  77. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
yarboblo
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2011-09-12 17:49 @784

Publicidad

Volver a JavaScript

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados