Foros del Web » Creando para Internet » CSS »

Hacer visible una capa ya visible (problema de niveles, creo)

Estas en el tema de Hacer visible una capa ya visible (problema de niveles, creo) en el foro de CSS en Foros del Web. Por medio de un bucle creo capas según resultados de una base de datos (todas das ellas ocultas), cuando pulso en un determinado sitio mando ...
  #1 (permalink)  
Antiguo 24/02/2005, 06:16
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 14 años, 5 meses
Puntos: 0
Hacer visible una capa ya visible (problema de niveles, creo)

Por medio de un bucle creo capas según resultados de una base de datos (todas das ellas ocultas), cuando pulso en un determinado sitio mando el código de la capa que quiero visualizar a una función y con las propiedades la hago visible...

Eso me funciona correctamente sino fuera pq cuando esa capa ya ha sido vista una vez no se me vuelve a mostrar.

Así creo las capas

Código:
<div id="Ficha-<? print $codigo ?>" style="position:absolute; width:54%; height:92%; z-index:5; left: 41%; top: 1%; visibility:hidden">
Esta es la función para mostrarlas, he probado mirando si esta ya visible y si es así ocultandola para volverla a visualizar pero no me funciona, debe ser un problema de niveles...

Código:
 
	function Mostrar_Ficha(Codigo)
	{
	if (document.getElementById('Ficha-'+Codigo).style.visibility!='hidden')
		{ document.getElementById('Ficha-'+Codigo).style.visibility='hidden'; }
	document.getElementById('Ficha-'+Codigo).style.visibility='visible';
	}
Como podría solucionarlo?
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #2 (permalink)  
Antiguo 24/02/2005, 16:08
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 12 años, 10 meses
Puntos: 9
mostrar capas

.
a todas las capas le asignas el z-index:5
¿Tienes otras capas con un z-index menor?
si es asi, y estan localizadas por encima de la capa que quieres mostrar no se vera a menos que le cambies tambien el z-index a un numero menor que estas ;tambien puedes quitarle el z-index a todo y probar ,de este modo siempre se mostrara la ultima capa llamada .
.
  #3 (permalink)  
Antiguo 25/02/2005, 02:43
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 14 años, 5 meses
Puntos: 0
He probado a cambiar el z-index a 1, y a quitarlo del todo y no hay manera... sigue sin funcionar, cuando ya se ha hecho visible una vez, no se muestra más.
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #4 (permalink)  
Antiguo 25/02/2005, 06:24
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 12 años, 10 meses
Puntos: 9
.

dejame ver el codigo .

.
  #5 (permalink)  
Antiguo 25/02/2005, 06:53
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 14 años, 5 meses
Puntos: 0
A partir de una consulta se crea un bucle que realiza esto hasta no tener más resultados....

Código:
<div id="Ficha-<? print $codigo ?>" style="position:absolute; width:54%; height:92%; left: 41%; top: 1%; visibility:hidden; z-index:1">
  <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="100%" height="100%">
    <param name="movie" value="Swf/Ficha.swf<? print $Variables ?>">
    <param name="quality" value="high">
	<param name="scale" value="exactfit">
    <embed src="Swf/Ficha.swf<? print $Variables ?>" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="100%" height="100%" scale="exactfit"></embed>
  </object>
</div>
Y en el flash llamo a esta función:

Código:
function Mostrar_Ficha(Codigo)
	{
	if (document.getElementById('Ficha-'+Codigo).style.visibility!='hidden')
		{ document.getElementById('Ficha-'+Codigo).style.visibility='hidden'; }
	document.getElementById('Ficha-'+Codigo).style.visibility='visible';
	}
Muchas gracias por todo!
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #6 (permalink)  
Antiguo 25/02/2005, 07:56
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 12 años, 10 meses
Puntos: 9
mostrar capas

.

Perdon no vi que ya habias puesto el codigo .

Bueno te comento.

Cita:
function Mostrar_Ficha(Codigo)
{
if (document.getElementById('Ficha-'+Codigo).style.visibility!='hidden')
{ document.getElementById('Ficha-'+Codigo).style.visibility='hidden'; }
document.getElementById('Ficha-'+Codigo).style.visibility='visible';
}


con esto le estas diciendo que si la ficha no esta ocuta se oculte, ademas sea lo que sea lo que de como resultado este 'if', en la siguiente linea la haces visible . Con esto resulta que todas las fichas que pases por esta funcion se haran visibles.

No se si el problema de la cuestion este aqui ,en que se muestren todas las fichas una detras de otra y al final no se ve ninguna; tal vez añadiendo 'else' despues del if se solucione la cuestion.

(document.getElementById('Ficha-'+Codigo).style.visibility!='hidden')
{ document.getElementById('Ficha-'+Codigo).style.visibility='hidden' }
else{document.getElementById('Ficha-'+Codigo).style.visibility='visible'}
}

de este modo solo se hara visible si no lo era.

Espero que esto funcione.

.


  #7 (permalink)  
Antiguo 25/02/2005, 09:18
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 14 años, 5 meses
Puntos: 0
A ver, la primera vez que se pincha cualquier ficha esta se hace visible,
aparentemente todo funciona correctamente hasta que se quiere volver a ver otra ficha que ya había sido vista (volverla a hacer visible), y ahí es donde esta el problema, que no vuelve a visualizarse...
La función prentendia controlar que si la ficha ya se había previsualizado anteriormente, se ocultara y se volviera a visualizar (por eso no es que me faltara el else, pretendía como volver al estado del principio), fué una idea que tuve, pero... se vé que no funciono...
Pues.. no sé como podría solucionarlo, se pueden destruir las capas? XD (igual funciona si en vez hacer invisible la capa la borro...)
No sé, no tengo más ideas... AYUDA! :(
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #8 (permalink)  
Antiguo 25/02/2005, 11:45
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 14 años, 5 meses
Puntos: 0
Que tal si movemos esto a javascript? Igual allí pueden darme alguna solución...
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #9 (permalink)  
Antiguo 26/02/2005, 05:42
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 12 años, 10 meses
Puntos: 9
reemplazo de capas

Si ,a ver si alli tienes mas suerte. Lo ultimo que se me ocurre es esto ,pues una vez tuve un problema similar.

Como todas las capas tienen el mismo z-index, creo que tienes que ocultar cualquier capa que ocupe ese mismo lugar antes de mostrar una nueva ; por lo que tendrias que crear un bucle ocultando la/las que son visibles, y una vez completado el bucle, mostrar la nueva capa.
  #10 (permalink)  
Antiguo 27/02/2005, 04:44
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 14 años, 5 meses
Puntos: 0
Hola programetior

Ya había pensando en esa posibilidad de ocultar todas menos la que quiero enseñar, pero como vienen de la base de datos, no sé exactamente cuantas tendré... si 5 o 40, entiendes? no sé, voy a darle más vueltas..

Muchas gracias por todo!
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #11 (permalink)  
Antiguo 27/02/2005, 15:39
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 12 años, 10 meses
Puntos: 9
.

siento no poder ayudarte Enea .

debe haber alguna forma, de que sepas cuantas capas se crean, y cuales son visibles en un momento dado.
Supongo que el codigo es un numero, y que en el bucle les asignas uno, asi: ficha1 ,ficha2 ,etc.... ¿no?
pues el mismo tope utilizado en el bucle para crear las fichas es el que debes utilizar para ocultarlas . alguna manera ha de haber de solucionarlo ,seguro .

saludos.
.
  #12 (permalink)  
Antiguo 28/02/2005, 04:29
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 14 años, 5 meses
Puntos: 0
Hola de nuevo!

Ya por fin lo he conseguido!

Al final opté por la opción que me diste de hacerlo con un bucle pero como viene de base de datos el númerito de al lado de la ficha y no tenía porque ser correlativo pues me daba rabia, y pensaba que igual en javascript o similares había alguna otra cosa más sencilla. En fin, si me hubiera puesto con eso desde el principio seguro que hubiera terminado antes..
Muchismas gracias programeitor por tu interes y ayuda, eso anima.
Aquí dejo el código final por si a alguien pudiera ayudarle la idea.

Código:
function Mostrar_Ficha(Codigo)
{
	<? 
	$resultado=mysql_query("Select * from inmueble");	 
	while ($Inmuebles=mysql_fetch_array($resultado)) { ?>
			var cod="<? print $Inmuebles[Id] ?>";
			Capa=document.getElementById('Ficha-'+cod);
			if (Capa != null)
				 {
				if (document.getElementById('Ficha-'+cod).style.visibility=="visible")
					{document.getElementById('Ficha-'+cod).style.visibility="hidden";}
				}
	<?	 } ?>
	document.getElementById('Ficha-'+Codigo).style.visibility='visible';
}
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #13 (permalink)  
Antiguo 28/02/2005, 08:32
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 12 años, 10 meses
Puntos: 9
por fin .

Me alegro muchisimo que al fin lo hayas conseguido .
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:22.