Foros del Web » Programando para Internet » Javascript »

Sobre la ocultación de capas [pequeña duda]

Estas en el tema de Sobre la ocultación de capas [pequeña duda] en el foro de Javascript en Foros del Web. Hola foreros. Os explico el problema, Estoy haciendo una lista de reproducción para seleccionar la música a sonar en la página (cosa que no tiene ...
  #1 (permalink)  
Antiguo 02/09/2008, 01:02
Avatar de xenon87  
Fecha de Ingreso: agosto-2008
Mensajes: 26
Antigüedad: 15 años, 8 meses
Puntos: 0
Información Sobre la ocultación de capas [pequeña duda]

Hola foreros.
Os explico el problema,

Estoy haciendo una lista de reproducción para seleccionar la música a sonar en la página (cosa que no tiene que ver con javascript, porque es flash).

Entonces al pasar el mouse por una imagen, despliega una capa que tiene la lista de canciones (con etiquetas <li> y un onclick cada etiqueta para que la música suene con ajax y flash)

Entonces, el usuario se supone que puede elegir canción o pasar de ello, por lo que le he puesto el evento onMouseOut al Div para que tras salir se me oculte la capa. La verdad esque me funciona, el problema esque cuando paso el mouse por encima de un <li>, se me cierra automaticamente la capa.

He probado de quitarle los <a> y el onclick a los <li> que hay en el div y no hay ningún problema. Que puede ser?

Gracias ^^
  #2 (permalink)  
Antiguo 02/09/2008, 01:18
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Sobre la ocultación de capas [pequeña duda]

Habría que ver el código. Probablemente tenga que ver con la propagación del evento, pero sin ver el código es difícil aportar una solución.
  #3 (permalink)  
Antiguo 02/09/2008, 01:57
Avatar de xenon87  
Fecha de Ingreso: agosto-2008
Mensajes: 26
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Sobre la ocultación de capas [pequeña duda]

Sería algo así. (esque estoy en el pc del trabajo, mis cosas están en el portátil)

<img src="icono_expandir.gif" onmouseOver="abre_la_lista_de_reproduccion()">
<div id="lista_de_reproduccion" onmouseOut="oculta_la_lista_de_reproduccion()">
<li onclick="cambio_la_musica(1)">Throught the fires and flames - Dragon Force</li>
<li onclick="cambio_la_musica(1)">Hyper Ballard- Bjork</li>
<li onclick="cambio_la_musica(1)">Give ir all - Rise Against</li>
.... (más)
</div>

--------- codigo javascript ----------

abre_la_lista_de_reproduccion(){
var obj = document.getElementById('lista_de_reproduccion');
obj.style.display="block";
}

oculta_la_lista_de_reproduccion(){
var obj = document.getElementById('lista_de_reproduccion');
obj.style.display="none";
}

-------- css -------

En el css solo tengo definido unos márgenes,el display:none, color de fondo, y el tamaño del div.
  #4 (permalink)  
Antiguo 02/09/2008, 02:27
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Sobre la ocultación de capas [pequeña duda]

Probá así:
Código PHP:
<html>
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<
title>Sin título-1</title>
<
script>
function 
stopEvent(e) {
    if (!
ewindow.event;
    if (
e.stopPropagation) {
        
e.stopPropagation();
    } else {
        
e.cancelBubble true;
    }
}
var 
addEvent = function() {
  if (
window.addEventListener) {
    return function(
eltypefn) {
      
el.addEventListener(typefnfalse);
    };
  } else if (
window.attachEvent) {
    return function(
eltypefn) {
      var 
= function() {
        
fn.call(elwindow.event);
      };
      
el.attachEvent('on' typef);
    };
  }
}();
function 
abre_la_lista_de_reproduccion(e){
var 
obj document.getElementById('lista_de_reproduccion');
obj.style.display="block";
}

function 
oculta_la_lista_de_reproduccion(e){
this.style.display="none";
stopEvent(e);
}
function 
cambio_la_musica(algo){alert(algo)}
window.onload=function(){
    
addEvent(document.getElementById('lista_de_reproduccion'),'mouseout',oculta_la_lista_de_reproduccion);
    
addEvent(document.getElementById('lista_de_reproduccion'),'mouseover',abre_la_lista_de_reproduccion);

}
</script>
</head>
<body>
<img src="1.jpg" width="50" onmouseover="abre_la_lista_de_reproduccion(event)">
<div style="display:none" id="lista_de_reproduccion">
<li onclick="cambio_la_musica(1)">Throught the fires and flames - Dragon Force</li>
<li onclick="cambio_la_musica(1)">Hyper Ballard- Bjork</li>
<li onclick="cambio_la_musica(1)">Give ir all - Rise Against</li>
</div>
</body>
</html> 
  #5 (permalink)  
Antiguo 02/09/2008, 02:49
Avatar de xenon87  
Fecha de Ingreso: agosto-2008
Mensajes: 26
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Sobre la ocultación de capas [pequeña duda]

Te lo agradezo panino, pero no me interesa el meterle tanto código extra para que funcione. Solo quiero saber el por qué no me funciona.
Tal y como digo, lo curioso esque poniendo texto a pelo funciona perfectamente (es decir, entro en la capa con el mouse, y al salir de ella se cierra)

Con <li onclick="blabla()"> al entrar en la capa se me cierra automaticamente tras pasar el mouse sobre estos elementos. Es decir, solo cuando paso el mouse por los <li> se cierra. Lo comprobé poniendo un margin-top:'10px', en esos 10 pixeles podia moverme perfectamente sin que pasara nada y al salir del div se cerraba correctamente el div.

Alguna sugerencia?
  #6 (permalink)  
Antiguo 02/09/2008, 03:48
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Sobre la ocultación de capas [pequeña duda]

Con menos código sería así:
Código:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Sin título-1</title>
<script>
function abre_la_lista_de_reproduccion(e){
var obj = document.getElementById('lista_de_reproduccion');
obj.style.display="block";
}

function oculta_la_lista_de_reproduccion(e){
var obj = document.getElementById('lista_de_reproduccion');
obj.style.display="none";
}
function cambio_la_musica(algo){alert(algo)}

</script>
</head>
<body>
<img src="1.jpg" width="50" onmouseover="abre_la_lista_de_reproduccion(event)">
<div style="display:none" id="lista_de_reproduccion" onmouseover="abre_la_lista_de_reproduccion(event)" onmouseout="oculta_la_lista_de_reproduccion(event)">
<li onClick="cambio_la_musica(1)">Throught the fires and flames - Dragon Force</li>
<li onClick="cambio_la_musica(1)">Hyper Ballard- Bjork</li>
<li onClick="cambio_la_musica(1)">Give ir all - Rise Against</li>
</div>
</body>
</html>
Para saber por qué pasa, leete esto: http://kusor.net/traducciones/brainj...vents1.es.html

Última edición por Panino5001; 02/09/2008 a las 03:57
  #7 (permalink)  
Antiguo 02/09/2008, 08:06
Avatar de xenon87  
Fecha de Ingreso: agosto-2008
Mensajes: 26
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Sobre la ocultación de capas [pequeña duda]

Muchas gracias panino5001 ^^
Funciona genial, y ya me he leido ese artículo.

De nuevo, gracias por las molestias.
  #8 (permalink)  
Antiguo 02/09/2008, 09:12
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Sobre la ocultación de capas [pequeña duda]

Me alegra mucho que hayas leído el artículo .
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:05.