Una básica y sencilla forma de hacerlo es tomar a todos los elementos del documento HTML, utilizar un bucle para iterar sobre dicho conjunto y, en cada iteración, verificar que el elemento actual en la iteración o el elemento que lo contiene no sea visible. De ser así, bien puedes contarlo o asignarlo a un array.
Código Javascript
:
Ver originalvar elementos = document.getElementsByTagName("*"),
total = elementos.length,
invisibles = [];
for (var i = 0; i < total; i++){
var actual = elementos[i],
padre = elementos[i].parentNode;
//Para compatibilidad con versiones anteriores a IE9
if (window.getComputedStyle){
if (getComputedStyle(actual).display == "none" || getComputedStyle(padre).display == "none"){
invisibles.push(elementos[i]);
}
}
else{
if (actual.currentStyle.display == "none" || padre.currentStyle.display == "none"){
invisibles.push(elementos[i]);
}
}
}
De este modo, el array
invisibles
contendrá a todos los elementos que no sean visibles en el documento. El valor de la propiedad
display
lo obtengo con el método
getComputedStyle
o con
currentStyle
en caso de que el navegador fuera IE8 o una versión anterior.
Saludos