Foros del Web » Programando para Internet » Javascript »

ocultar varias capas

Estas en el tema de ocultar varias capas en el foro de Javascript en Foros del Web. Hola, a todos, tengo el siguiente codigo Código: <script language="javascript"> function muestra(id){ document.getElementById(id).style.visibility="visible"; } Código: <body> <a href="#" onclick="muestra('caparoja');"><div class="texto" id="roja">Capa Roja</div></a> <a href="#" onclick="muestra('capaverde');"><div ...
  #1 (permalink)  
Antiguo 03/08/2011, 12:56
 
Fecha de Ingreso: abril-2007
Mensajes: 166
Antigüedad: 17 años
Puntos: 2
ocultar varias capas

Hola, a todos, tengo el siguiente codigo

Código:
<script language="javascript">

function muestra(id){
 document.getElementById(id).style.visibility="visible";
}
Código:
<body>

<a href="#" onclick="muestra('caparoja');"><div class="texto" id="roja">Capa Roja</div></a>

<a href="#" onclick="muestra('capaverde');"><div class="texto" id="verde">Capa Verde</div></a>

<a href="#" onclick="muestra('capaanarilla');"><div class="texto" id="amarilla">Capa Amarilla</div></a>

<a href="#" onclick="muestra('capaazul');"><div class="texto" id="azul">Capa Azul</div></a>

<div class="texto" id="reset" >RESET</div></a>

<div id="caparoja"></div>
<div id="capaverde"></div>
<div id="capaanarilla"></div>
<div id="capaazul"></div>

</body>
</html>
El problema es que quiero que todas estas capas se oculten a la vez con el botón reset, pero no se como hacerlo, por que como tenia pensado hacerlo, era de esta manera

Código:
function oculta(id1,id2,id3,id4)
document.getElementById(id1,id2,id3,id4).style.visibility="hidden";
Pero resulta que no recorre bien los id, por que como veis los id no son numeros que en ese caso un bucle for y ya esta, es decir no se como hacer que los argumentos detecten esos id que tengo puestos, para poder borrar todas las capas a la vez pulsando el boton reset.


Pues nada haber que me decis, por que tengo un lio. Ufff.

Gracias
  #2 (permalink)  
Antiguo 03/08/2011, 14:08
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: ocultar varias capas

envuelve esos div dentro de otro div con la id que quieras. sacas la colección de elementos que tiene ese bloque que has creado
Cita:
document.getElementById(divpadre).getElementsByTag Name('div').length
ahora si puede usar un ciclo
  #3 (permalink)  
Antiguo 03/08/2011, 14:27
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: ocultar varias capas

buenas,
el método getElementById no admite multiples argumentos, por eso no funcionará de esa forma. el código lo puedes hacer hardcoded (sentencias fijas que no tienen la posibilidad de expandirse, mala práctica) o de forma genérica. en hardcoded tendrías que escribir tantas sentencias sean necesarias de acuerdo a la cantidad de parámetros que admite la función.
Código:
// hardcode;
function foo(param1, param2, ...){
getelement(param1)...
getelement(param2)...
getelement(...)...
}
en la forma genérica, tendrías que determinar cuantos parámetros se le pasaron a la función e iterar los parámetros con un bucle para repetir una serie de instrucciones.

Código:
// genérica, nótese que no se declaran los argumentos;
function foo(){
for(var len = arguments.length, i = 0; i < len; i++) getelement(arguments[i])...
}
arguments es un objeto parecido a un array que contiene todos los argumentos pasado a la función.

nota: literalmente, getelement no es una función. es solo para describir una función que obtiene un elemento. o sea, getElementById.

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #4 (permalink)  
Antiguo 03/08/2011, 15:54
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: ocultar varias capas

zerokilled, entiendo lo que dices. pero, no es menos dinámico?? es decir, has de pasarle la id
Cita:
foo("elem1", "elem2", "elem3")
gracias
  #5 (permalink)  
Antiguo 03/08/2011, 16:08
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: ocultar varias capas

depende de lo que quieras hacer y como lo quieras hacer. tu alternativa también es igual de válida. lo que difiere mi propuesta con la tuya es el requisito de la estructura de elementos. personalmente, haría lo mismo que has propuesto. no obstante, mi enfoque iba más a indicarle algunas ideas de como hacer algo similar a lo que inicialmente el autor tenia visualizado.

por cierto, el mensaje anterior lo redacte antes de que el tuyo fuera publicado. pero tal parece que me demore mucho. si hubiera leido tu mensaje, probablemente no hubiera redactado mi respuesta. reitero lo dicho lo dicho en otro tema, cosas que todos pasamos.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #6 (permalink)  
Antiguo 03/08/2011, 16:21
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: ocultar varias capas

Cita:
Iniciado por zerokilled Ver Mensaje
depende de lo que quieras hacer y como lo quieras hacer. tu alternativa también es igual de válida. lo que difiere mi propuesta con la tuya es el requisito de la estructura de elementos. personalmente, haría lo mismo que has propuesto. no obstante, mi enfoque iba más a indicarle algunas ideas de como hacer algo similar a lo que inicialmente el autor tenia visualizado.

Cita:
Iniciado por zerokilled Ver Mensaje
por cierto, el mensaje anterior lo redacte antes de que el tuyo fuera publicado. pero tal parece que me demore mucho. si hubiera leido tu mensaje, probablemente no hubiera redactado mi respuesta. reitero lo dicho lo dicho en otro tema, cosas que todos pasamos.
y aunque lo hueras visto, siempre es mejor una explicación/código tuyo que lo que yo pueda aportar

un saludo
  #7 (permalink)  
Antiguo 04/08/2011, 06:50
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: ocultar varias capas

Y si nos vamos a navegadores un poco más modernos, otras soluciones son:
Código Javascript:
Ver original
  1. // Usando forEach
  2. ['id1', 'id2', 'id3'].forEach(function(act){ document.getElementById(act).style.visbility = 'visible'; });
  3.  
  4. // Usando clases
  5. document.getElementsByClassName('texto');
  6. // recorrer el NodeList
  7.  
  8. // Y la mejor para mí, usando querySelectorAll
  9. document.querySelectorAll('a > div.texto[id]'); // Selector super complejo XD
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #8 (permalink)  
Antiguo 04/08/2011, 07:07
Avatar de Pablo Ayala  
Fecha de Ingreso: septiembre-2005
Ubicación: Cancún, México
Mensajes: 231
Antigüedad: 18 años, 7 meses
Puntos: 28
Respuesta: ocultar varias capas

Una solucion con jquery:

<div class="texto" id="reset" >RESET</div></a>

<div id="caparoja" class="ocultar"></div>
<div id="capaverde" class="ocultar"></div>
<div id="capaanarilla" class="ocultar"></div>
<div id="capaazul" class="ocultar"></div>

$("#reset").click(function{
$('.ocultar').toggle('slow');
});


PD. Recuerda incluir la linea que llama al jquery:
https://ajax.googleapis.com/ajax/lib....6.2/jquery.js

Saludos!!!!
__________________
Atentamente,

Pablo Ayala.
Si vas a responder algo en el foro que sea con amabilidad.
  #9 (permalink)  
Antiguo 08/08/2011, 15:16
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 871
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta Respuesta: ocultar varias capas

Hola viendo el tema planteado, mucho del tema no entiendo, estoy aprendiendo y se me plantea el siguiente problema, al hacel click a un boton, que lo hago de esta manera:

<din onclick por() ........>

con funciones oculto y muestro si se fijan el copdigo de abajo se oculta todas las capas y deja una visible, como puedo resumir este codigo?.

Código Javascript:
Ver original
  1. function por(){
  2.      var quo_1=document.getElementById('cam1').style.display='none';
  3.      var quo_2=document.getElementById('p1').style.display='block';
  4.      var quo_3=document.getElementById('s11').style.display='none'
  5.      var quo_4=document.getElementById('sc1').style.display='none'}
  6. function ini(){
  7.      var quo_1=document.getElementById('cam1').style.display='block';
  8.      var quo_2=document.getElementById('p1').style.display='none';
  9.      var quo_3=document.getElementById('s11').style.display='none'
  10.      var quo_4=document.getElementById('sc1').style.display='none'}
  11.    
  12. function ser(){
  13.      var quo_1=document.getElementById('cam1').style.display='none';
  14.      var quo_2=document.getElementById('p1').style.display='none';
  15.      var quo_3=document.getElementById('s11').style.display='block';
  16.      var quo_4=document.getElementById('sc1').style.display='none'}
  17. function con(){
  18.      var quo_1=document.getElementById('cam1').style.display='none';
  19.      var quo_2=document.getElementById('p1').style.display='none';
  20.      var quo_3=document.getElementById('s11').style.display='none';
  21.      var quo_4=document.getElementById('sc1').style.display='block';}

Muchas gracias.
saludos a todos

Etiquetas: capas, html, botones
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 00:47.