Foros del Web » Programando para Internet » Javascript »

Mostrar/ocultar elementos en función de un valor

Estas en el tema de Mostrar/ocultar elementos en función de un valor en el foro de Javascript en Foros del Web. Hola a todo el mundo. La idea es la siguiente: Tengo una serie de elemtos en la página, pongamos por caso que es una tabla ...
  #1 (permalink)  
Antiguo 30/11/2005, 17:46
 
Fecha de Ingreso: noviembre-2005
Mensajes: 14
Antigüedad: 18 años, 5 meses
Puntos: 0
Mostrar/ocultar elementos en función de un valor

Hola a todo el mundo.
La idea es la siguiente: Tengo una serie de elemtos en la página, pongamos por caso que es una tabla o un formulario.
Quiero que al tomar uno de los campos un determinado valor (por ejemplo el valor "Administrador" uno de esos elementos aparezca y viceversa, si no aparece ese valor o aparece otro distinto, que desaparezca). El valor de dicho campo se obtiene a traves de GET, de POST o de una Variable de sesion.
Lo que tengo desarrollado es lo siguiente:

<script language="Javascript">
function mostrar(nombreCapa){
document.getElementById(nombreCapa).style.display= "block";
}
function ocultar(nombreCapa){
document.getElementById(nombreCapa).style.display= "none";
}
</script>
</head>
<body>
<script language="Javascript">
if (document.getElementById('pepemac').value=="767110 59";)
{
mostrar(capa2);
}
</script>


El campo desde el que recibe el valor es este.

<input name="textfield" type="text" id="pepemac" value="<?php echo $_SESSION['MM_IDUSUARIO']; ?>" />

Muchas gracias

Última edición por pepemac; 30/11/2005 a las 18:15
  #2 (permalink)  
Antiguo 01/12/2005, 16:31
 
Fecha de Ingreso: octubre-2004
Ubicación: España
Mensajes: 894
Antigüedad: 19 años, 6 meses
Puntos: 3
Hola, pepemac, y bienvenido al foro.

Pueden pasar varias cosas:

1) cuando se lee la línea if (document.getElementById('pepemac').value aún no existe el elemento pepemac, así que no se puede evaluar. Ponla en una función o en el onLoad

2) A veces no es posible cambiar el estilo CSS usando JS si no se ha definido usando JS.

En todo caso, no dices cómo te está funcionando y qué es lo que falla.
__________________
Angel :cool:
  #3 (permalink)  
Antiguo 01/12/2005, 17:16
 
Fecha de Ingreso: noviembre-2005
Mensajes: 14
Antigüedad: 18 años, 5 meses
Puntos: 0
Hola Agsanchez.
Ante todo, muchas gracias por tu respuesta.
Te cuento:
El script (sin el if) funciona cuando la llamada a las funciones "mostrar" u "ocultar" las realizo desde un botón (sin integrarlo en el formulario) con los eventos onmouseover o cualquier otro.
El problema lo tengo cuando la acción de mostrar u ocultar tiene que hacerla de forma automática y en función del script que contiene el condicional.
Por lo tanto es un problema del condicional.
Puede ser lo que dices tú, es decir, que no lea correctamente el valor de la variable, pero dudo de ello ya que he probado asignandole un valor fijo en "value" al textfield que lleva por nombre "pepemac" y sigue sin funcionar.
Cuando cargo la página, esta muestra el valor dentro del campo "pepemac" en un caso (por variable) y en el otro (valor fijo).
  #4 (permalink)  
Antiguo 01/12/2005, 17:18
 
Fecha de Ingreso: noviembre-2005
Mensajes: 14
Antigüedad: 18 años, 5 meses
Puntos: 0
El script es este:

<script language="Javascript">
if (document.getElementById('pepemac').value="7671105 9";)
{
mostrar('capa1') ;
}
else
{
ocultar('capa1');
}
</script>
  #5 (permalink)  
Antiguo 01/12/2005, 17:23
 
Fecha de Ingreso: noviembre-2005
Mensajes: 14
Antigüedad: 18 años, 5 meses
Puntos: 0
y el botón con el que funciona con el script que contiene las funciones mostrar y ocultar es este.

<input type="submit" name="Submit" value="Enviar" onclick="ocultar('capa2')" />

Y funciona perfecto, pero no es lo que busco, tal como comentaba al principio.

La cuestión es que estoy diseñando un sitio web para mis alumnado y quiero que cuando entren en algunas páginas vean ciertos elementos asociados a su condición de "Alumno" y sin embargo no vean otras asociadas a la condición de "Profesor" o "Administrador" pero sin tener que diseñar distintas páginas para cada uno de los perfiles.
  #6 (permalink)  
Antiguo 02/12/2005, 05:11
 
Fecha de Ingreso: noviembre-2005
Mensajes: 14
Antigüedad: 18 años, 5 meses
Puntos: 0
Hola, al final lo he solucionado tirando del siguiente truco:
El script que oculta y muestra las capas lo mantengo.
El script que contiene el condicional lo elimino.
El boton con la llamada a la función mostrar u ocultar, lo mantengo.
Y aquí reside el truco (que no es truco).
Oculto el botón o grupo de botones que muestran u ocultan las capas con un scritp de php mediante una función y llamando despues a dicha función con un condicional, es decir.

<? function Mostrar() { ?>
<input type="submit" name="Submit" value="Mostrar opciones" onclick="mostrar('capalink1')" />
<? }?>
<?php
if ($_SESSION['MM_IDUSUARIO']=="lo que sea")
Mostrar();
?>

De todas formas no me parece una forma muy elegante de hacerlo y preferiría que alguien me aportase alguna idea sobre como solucionarlo con la idea original.

Graciassssss
  #7 (permalink)  
Antiguo 06/12/2005, 14:04
 
Fecha de Ingreso: octubre-2004
Ubicación: España
Mensajes: 894
Antigüedad: 19 años, 6 meses
Puntos: 3
Hola de nuevo, pepemac
He intentado reproducir tu código y, aunque me falta saber cuándo quieres llamar a la función que oculta, he observado un par de cosas; espero que alguna de ellas te permita solucionarlo

1) en if (document.getElementById('pepemac').value=="767110 59";)
sobra el punto y coma:
if (document.getElementById('pepemac').value=="767110 59")

2) luego pusiste if (document.getElementById('pepemac').value="7671105 9";)
al que le falta un signo igual:
if (document.getElementById('pepemac').value=="767110 59")

3) no veo necesario ocultar el botón, simplemente no lo pongas y llama directamenbte a la función
<?php
if ($_SESSION['MM_IDUSUARIO']=="lo que sea")
mostrar('capalink1');
?>

4) ¿Has probado a llamar a la función en <body onLoad ?

5) Prueba esto, a ver si es lo que quieres:
Código HTML:
<head>
<script type="text/javascript">
function mostrar(nombreCapa){
document.getElementById(nombreCapa).style.display= "block";
}
function ocultar(nombreCapa){
document.getElementById(nombreCapa).style.display= "none";
}
function inicial(){
	if (document.getElementById('pepemac').value=="76711059")
	{
	mostrar('capa1') ;
	}
	else
	{
	ocultar('capa1');
	}
}
</script>
</head>
<body onLoad="inicial()">
<div id='capa1'>Capa secreta</div>
<form>
<input type="text" id="pepemac" onChange="inicial()">
<br>
<input type="button" value="Mostrar" onclick="mostrar('capa1')" />
<input type="button" value="Ocultar" onclick="ocultar('capa1')" />
</form>
</body> 
__________________
Angel :cool:
  #8 (permalink)  
Antiguo 09/12/2005, 13:37
 
Fecha de Ingreso: noviembre-2005
Mensajes: 14
Antigüedad: 18 años, 5 meses
Puntos: 0
Fetén

Hola AngSanchez.
Muchas gracias.
Tal como apuntabas, funciona perfectamente.
En aquellos casos en los que la información que deseo esconder es vital, lo hago con php, con la función que te indicaba antes. En los demás casos utilizo la función de Javascript que es más fácil y puedo aplicársela a más elementos y me permite que estos estén mezclados, lo único que tengo que hacer es asignarles distintos nombres de id a las capas que los contienen.
Lo dicho, muchas gracias. Da gusto "bucear" por estos foros.
  #9 (permalink)  
Antiguo 09/12/2005, 13:57
 
Fecha de Ingreso: octubre-2004
Ubicación: España
Mensajes: 894
Antigüedad: 19 años, 6 meses
Puntos: 3
Un placer.
Suerte con tus proyectos
__________________
Angel :cool:
  #10 (permalink)  
Antiguo 12/12/2005, 09:36
Avatar de aRTeX  
Fecha de Ingreso: mayo-2005
Mensajes: 374
Antigüedad: 19 años
Puntos: 0
Hola a todos, este es un script que necesito, pero como lo puedo hacer para que me muestre mas de un control??

o sea quiero que al presionar el boton, muestre un text y un combobox, como lo hago??? y todo desde un mismo boton???
  #11 (permalink)  
Antiguo 12/12/2005, 17:30
 
Fecha de Ingreso: noviembre-2005
Mensajes: 14
Antigüedad: 18 años, 5 meses
Puntos: 0
Cñas

Hola.
Colocas ambos elementos en una capa (una cada uno, si están separados) y le asignas un id a cada capa.
Después aplicas el script que AgSanchez dejó y listo.
Voila.
Espero que te funcione.
Un saludo.
  #12 (permalink)  
Antiguo 12/12/2005, 17:31
 
Fecha de Ingreso: noviembre-2005
Mensajes: 14
Antigüedad: 18 años, 5 meses
Puntos: 0
Capas para cada elemento si están separadas

Perdona por el "cñas" de antes... se me fue la tecla...
  #13 (permalink)  
Antiguo 19/11/2007, 14:51
Avatar de agressor  
Fecha de Ingreso: noviembre-2007
Ubicación: Knocking the Death Door..
Mensajes: 368
Antigüedad: 16 años, 5 meses
Puntos: 3
Re: Mostrar/ocultar elementos en función de un valor

Hola que tal?? Veran tengo el mismo problema solo que yo uso variables de Sesion y no se como colocarlo en la funcion y ya probe de muchas maneras y no tengo ni la menor idea de como hacerlo..

Veran mi aplicacion toma en cuenta niveles de usuarios y en vez de crear paginas donde no aparezca el boton Eliminar lo que quiero hacer es crear un etiqueta <div> para el formulario de eliminar.. ya que no deberia aparecer si el nivel de usuario es distinto de 1.. no se como se podria realizar cualquier aporte sera de mucha ayuda se los agradezco de antemano..
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 16:03.