Ver Mensaje Individual
  #6 (permalink)  
Antiguo 08/09/2014, 11:45
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 6 meses
Puntos: 977
Respuesta: Mostrar div previamente seleccionado

No es necesario el uso de eval, menos de esa forma pues, si un usuario editara el valor del combo desde el panel de herramientas de desarrollo, terminaría ejecutándose un posible código malicioso. Por otro lado, para el mostrado y ocultamiento de los elementos con JavaScript, se me ocurre una solución más práctica:

Código Javascript:
Ver original
  1. var divs = document.getElementsByTagName("div"),
  2.     total = divs.length;
  3.  
  4. function mostrar(id) {
  5.     for (var i = 0; i < total; i++){
  6.         divs[i].className = divs[i].id == id ? "visible" : "invisible";
  7.     }
  8. }

Esta parte es sencilla. Tomo a los elementos <div> y a la función le paso el valor seleccionado en el combo, el cual debe de ser uno de los id de los elementos <div>. En la función, recorro al conjunto de elementos <div> y, en cada iteración, comparo el id de cada uno de ellos con el valor recibido; si coinciden, cambio el nombre de la clase del elemento <div> actual por 'visible', caso contrario, por 'invisible'. Para esto, tu combo tendrá que tener esta forma:

Código HTML:
Ver original
  1. <select id = "select" onchange = "mostrar(this.value)">
  2.         <option value = "e1">Uno</option>
  3.         <option value = "e2">Dos</option>
  4.         <option value = "e3">Tres</option>

Como verás, solo cambié los valores de las opciones por los id de los elementos <div> y, en la llamada a la función, envío el valor seleccionado en el combo. La ventaja de hacerlo de esta manera es que, aunque tengas más o menos elementos <div>, no tendrás que aumentar o disminuir código en la función, siempre funcionará.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand