Esconder / Mostrar Elementos en tu Página Web

>> //seccion/javascript/ -- 3 comentario /// Agregado el 2005-07-08 @ Por SparoHawk

A muchos de nosotros nos gustan los diseños simples. Y mejor aún si podemos darles ciertas opciones a los usuarios, como por

ejemplo mostrar u esconder ciertas cosas, el cual es el propósito de este tutorial.

A muchos de nosotros nos gustan los diseños simples. Y mejor aún si podemos darles ciertas opciones a los usuarios, como por ejemplo mostrar u esconder ciertas cosas, el cual es el propósito de este tutorial.

Información General

Este tutorial empleará varias cosas para llegar a nuestro fin. Estaremos utilizando:

Aqui lo menos importante es el CSS, pero lo estoy utilizando para darle un mejor asepecto a los ejemplos, así que no le tienes que prestar atención. El nivel de JavaScript es intermedio, así que no sólo trataré de explicarles para que lo entiendan, si no que haré el JavaScript para que lo puedan utilizar con lo que sea. Los cookies los estaremos creando y manipulando con el mismo JavaScript, así que no necesitams ni PHP ni ASP como mucho pueden llegar a pensar. En este link podrán ver el ejemplo que vamos a utilizar. Si ven el código del ejemplo verán que no hay nada de JavaScript. Eso lo iremos poniendo poco a poco.

Creación de la Funciones

Lo primero que vamos a hacer es crea la funciones, y el aspecto básico en el que debemos de pensar es el siguiente: al darle al botón quiero que la segunda columna se esconda, y que la primera ocupe el espacio de la segunda. Así que como primer paso vamos a crear las funciones de esconder y mostrar. Si notan en el HTML, cada columna tiene un "id", eso lo declaramos así para asociar el JavaScript de manera más fácil con el HTML, así que es algo necesario.

Antes de escribir las funciones debemos de hacerle dos modificaciones al archivo HTML. La primera es, a la segunda columna agregarle el atributo style="display:;". El display es un atributo de CSS que nos permite establecer el tipo de visibilidad que tendrá cierto elemento. La segunda modificación es al input (que es el botón que hara que se ejectue la acción, que en realidad puede ser lo que sea) le vamos a agregar el atributo onclick="em_columna();".

» Función de Esconder
Code:
function esconder(id_ele) {
   d.getElementById(id_ele).style.display = "none";
 }

» Función de Mostrar
Code:
function mostrar(id_ele) {
   d.getElementById(id_ele).style.display = "";
 }

» Función Condicional
Code:
function em_columna(id_ele) {
   if (d.getElementById(id_ele).style.display == "") {
     esconder(id_ele);
   }
   else {
     mostrar(id_ele);
   }
 }

Ok, ahí están las tres funciones principales por ahora. Ahora les explico como funciona. Con el onclick="em_columna('columna2');" le pasamos al script que queremos que la segunda columna sea escondida. El string (porque lo definimos entre '') es el nombre del id de la segunda columna. Aquí utilizamos muchas cosas de JavaScript, que prefiero explicar en otra parte, puesto que son cosas nativas del JavaScript y de los exploradores, basados en el DOM (Document Object Modeling). La función condicional dice: "Si el display de la segunda columna es igual a "" entonces escondela, si no entonces muestrala." En este link pueden ver un ejemplo que funciona.

El Cookie

Llegamos a una parte bastante... elaborada y que facilmente puede confundir. Así que lean con cuidado. Para el cookie vamos a necesitar dos funciones, más otra condicional. Una para crear el cookie, otra para leer el cookie y la condicional para saber el estado del cookie. Aquí están las funciones:

Función Crear Cookie
Code:
function crearcookie(nombre, valor) {
   d.cookie = nombre + "=" + valor + "; path=/";
 }

Función Leer Cookie
Code:
function readCookie(nombre) {
   var nombre_c = nombre + "=";
   var arreglo_c = d.cookie.split(';');
   for (i=0; i<arreglo_c.length; i++) {
     var cookie_c = arreglo_c[i ];
 //Nota, el espacio que hay entre el corchete y la letra "i" no va, lo que sucede es que si se escribe sin el espacio, el parse del site lo conderará un tag de phpBB (el de cursiva)
     while (cookie_c.charAt(0) == ' ') {
       cookie_c = cookie_c.substring(1, cookie_c.length);
     }
     if (cookie_c.indexOf(nombre_c) == 0) {
       return cookie_c.substring(nombre_c.length, cookie_c.length);
     }
   }
   return null;
 }

Función Condicional
Code:
function opcion(id_ele, n_cookie) {
   var x = leercookie(n_cookie);
   if (x == 1) {
     mostrar(id_ele);
   }
   else if (x == 0) {
     esconder(id_ele);
   }
 }

Ufff, bueno, ahora les explicare lo que hace cada función. (Nota: en el ultimo ejemplo, encontrarán qeu incluí conemtarios através del código del documento, esto es para explicarles con mas detalle y de cerca que es lo que ocurre, asi que si no entienden algo de aca, vayan alla a ver si lo entienden, si no, preguntenme, con gusto les explicare). La primera función, crearcookie es bastante sencilla, simplemente crea un cookie con el nombre que elijamos, y le asignamos el valor que queramos. *****La segunda función es para leer el cookie. Algo larga y mas complicada de lo que parece. Pero, basicamente es: vamos a buscar el nombre del cookie, luego hacemos un arreglo con los valores del cookie. Para hacer el arreglo separamos los valoresdel cookie por ";". Luego busco en el arreglo el nombre que le puse al cookie. Si encuentro el nombre, retorno el valor que le asigne. Si no, retrono nulo (null). Como mencione antes, si ven el código fuente del último ejemplo está con mucho más detalle. La condicional utiliza el valor que asigne para determinar el estado en que se debe de eonctrar la columna: escondida o mostrada.

Modificaciones

Ahora debemos de hacerle una modificación a la primera condicional, la funcion em_columna

Code:
function em_columna(id_ele, n_cookie) {
   if (d.getElementById(id_ele).style.display == "") {
     esconder(id_ele);
     crearcookie(n_cookie, 0);
   } else {
     mostrar(id_ele);
     crearcookie(n_cookie, 1);
   }
 }

Si se fijan, agregue el llamado a la funcion crearcookie y le pase unos valores, que son el nombre del cookie que elegi, más un valor. Cuando quiero que la columna no se muestre le asigno "0", y cuando quiero que se muestre le asigno "1". Y eso es todo. El ejemplo final lo pueden ver en este link.

Espero que le saquen provecho, y cualquier duda no duden en preguntarme XD. Más adelante ire añadiendo más ejemplos para que vean diferentes posibilidades.