Cita: Bueno yo creo que si tiene sentido, porque no son todos los elementos los que se muestran/ocultan...
eso lo entiendo, la funcion busca absolutamente todos los IDs definidos en el documento y estos son los que se van a ocultar/mostrar. de todos modos, a lo que estoy haciendo referencia es que te puedes evitar un paso. en lugar de tomar la id de los elementos puedes tomar la referencia directa de elementos con id. el paso que me refiero que te puedes evitar es la invocacion de getElementById en el ciclo que oculta los elementos, de modo que seria solo cuestion de iterar el array donde cada item es la referencia del elemento que tiene id.
Código:
function getElementsWithId() {
var allTags = document.body.getElementsByTagName('*');
var ids = [];
for (var tg = 0; tg< allTags.length; tg++) {
var tag = allTags[tg];
if (tag.id) {
ids.push(tag); // aqui se agrega el elemento al array en lugar de la id definida;
}
}
return ids; // la funcion devuelve el array;
}
luego en tu funcion los cambios serian:
Código:
var ids = getElementsWithId();
function cero() {
for (i=0;i<ids.length;i++){
// var seleccion = document.getElementById(ids[i]); esta linea ya no es necesaria;
ids[i].style.display="none";
// break;
}
}
volviendo a tu tema inicial... los elementos primero tienen que estar presente antes de invocar la funcion porque de lo contrario -como ya explicaba- javascript no sera capaz de encontrar los elementos necesario. tienes que invocarlo en el evento onload ya que este se dispara cuando el navegador termina de cargar el documento.
ahora bien, esto tiene una implicacion... y es que los elementos que quieres esconder por un momento pueden ser visibles al usuario y de repente percibira que ciertos contenidos han desaparecido. si quieres contraatacar esa percepcion, tendrias que ocultar los elementos en una hoja de estilo para que no sean visibles mientras se carga el documento. si optas por esta alternativa, entonces tu funcion para ocultar los elementos deja de tener sentido porque ya en un principio estan ocultos. adicional, mi recomendacion es que los estilos que ocultan los elementos lo agregues en una hoja de estilo separada y esta la cargues con javascript para evitar -en caso de que javascript este desactivado- que los elementos oculten y luego no puedas mostrarlos.