Foros del Web » Programando para Internet » Javascript »

verificar si un elemento esta visible

Estas en el tema de verificar si un elemento esta visible en el foro de Javascript en Foros del Web. hola, lo que estoy necesitando es saber como puedo averiguar si un elemento esta visible o no... explico: tengo un div contenedor, adentro hay varios ...
  #1 (permalink)  
Antiguo 18/05/2006, 03:56
Avatar de Wdeah  
Fecha de Ingreso: julio-2005
Ubicación: Argentina
Mensajes: 109
Antigüedad: 18 años, 9 meses
Puntos: 0
verificar si un elemento esta visible

hola, lo que estoy necesitando es saber como puedo averiguar si un elemento esta visible o no...
explico: tengo un div contenedor, adentro hay varios div con una cuenta regresiva, la cual, al llegar a 0, oculta ese div que esta adentro del contenedor.
que pasa, cuando queda el ultimo div, se oculta, pero el contenedor queda visible.. lo que necesito e saber si todos los div's tienen en ese momento la propiedad de css display == none, que oculte el contenedor tambien..

gracias.
  #2 (permalink)  
Antiguo 18/05/2006, 04:14
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola Wdeah

Pon un id al contenedor: <div id="algo">

y usa este código para ver si están todos los otros div ocultos:
Código PHP:
  obj document.getElementById('algo');
  for (
i=0ele=obj.getElementsByTagName('div')[i]; i++)
    if (
ele.style.display != 'none') return;
  
obj.style.display 'none'
Saludos,
  #3 (permalink)  
Antiguo 18/05/2006, 04:32
Avatar de Wdeah  
Fecha de Ingreso: julio-2005
Ubicación: Argentina
Mensajes: 109
Antigüedad: 18 años, 9 meses
Puntos: 0
claro, pero el tema es que adentro del contenedor tambien tengo otros divs, que no se ocultan, se ocultarian junto con el contenedor...
lo que pense fue ponerle el atributo name="nombre", a los div que oculto, entonces despues me fijo si unicamente los div's que el name sea nombre estan ocultos se oculte el contenedor..
  #4 (permalink)  
Antiguo 18/05/2006, 05:33
Avatar de Wdeah  
Fecha de Ingreso: julio-2005
Ubicación: Argentina
Mensajes: 109
Antigüedad: 18 años, 9 meses
Puntos: 0
bueno.. lo hice, pero no puedo entender porque no funca en IE

Código PHP:
divs document.getElementsByName('movs'); // movs se llaman los divs que oculto
    
var ocultos 0;
    for (
i=0divs.lengthi++)
    {
        if (
divs[i].style.display == 'none')
        {
            
ocultos++;
        }
    }
    if ((
divs.length == ocultos) && (divs.length != 0)) // tube que poner && (divs.length != 0 porque segun IE, divs.length es igual a 0 (¿¿¿???) :@
    
{
        
mostrar('movimientos'false); // oculto el contenedor
    

con el firefox anda de 10!
  #5 (permalink)  
Antiguo 18/05/2006, 07:29
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

explorer tiene una implementación malísima de esas colecciones... Permite duplicados de id's y los utiliza en ese método (getElementsByName())

Si quieres que valga en todos los navegadores, debes haher algo más complejo... Discriminar por otro atributo (incluso inventado)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 18/05/2006, 15:38
Avatar de Wdeah  
Fecha de Ingreso: julio-2005
Ubicación: Argentina
Mensajes: 109
Antigüedad: 18 años, 9 meses
Puntos: 0
ya esta, lo solucione modificando un poco el codigo que me dio JavierB

y despues de un rato entendi porque no funcionaba.. va al menos pense eso..
bueno, una ves que andaba en el FF, (yo boludeo mucho con el tema de que quiero que sean todos documentos XHTML 1.0 Validos), entonces voy a validar como habia quedado el codigo terminado.. y me dice que no era valido..
como?? se, decia que el atributo name no era valido en la etiqueta div, el dream tambien me lo dijo, pero no le di bola...
quizas era por eso que no funcionaba en IE
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 22:49.