Ver Mensaje Individual
  #4 (permalink)  
Antiguo 05/03/2018, 09:54
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: visualizar textos según lo que se elija

Efectivamente, si un elemento indicado en el código no existe en el documento, se produce un error. Ahora, lo que puedes hacer es: tomar el camino más largo, el cual consiste en realizar comprobaciones sucesivas mediante el uso de condiciones (N comprobaciones por cada N elementos), o tomar el camino más corto: utilizar una clase la cual se asignaría al bloque que se desea visualizar y, cuando se elija otra opción, se comprueba la existencia de algún bloque con dicha clase, se le retira la clase, se oculta a dicho bloque y, al bloque que se desea visualizar, se le asigna la clase de visualización y se lo hace visible.

Código Javascript:
Ver original
  1. document.addEventListener("DOMContentLoaded", function(){
  2.   var select = document.querySelector("#id_del_select"), //El <select>
  3.       valor, antiguo, nuevo;
  4.  
  5.   //Cuando se elija un valor diferente en el <select>
  6.   select.addEventListener("change", function(){
  7.  
  8.     //Si existe el valor elegido, se trabaja con él, caso contrario, con el valor booleano "false"
  9.     valor = this.value ? this.value : false;
  10.  
  11.     //Tomamos al elemento visible, si lo hay
  12.     antiguo = document.querySelector(".la_clase");
  13.  
  14.     //Tomamos al bloque que corresponda con el valor elegido si este existe o se establece un valor nulo
  15.     nuevo = valor ? document.querySelector("#" + valor) : null;
  16.      
  17.     //Si existe un bloque visible
  18.     if (antiguo){
  19.       //Le retiramos la clase y automáticamente se ocultará
  20.       antiguo.className = "";
  21.     }
  22.  
  23.     //Si el valor de la opción elegida existe
  24.     if (valor){      
  25.       //Al nuevo se le añade la clase y automáticamente se hará visible
  26.       nuevo.className = "la_clase";
  27.     }
  28.   }, false);
  29. });

Para este ejemplo estoy considerando que, inicialmente, todos los bloques están ocultos. Eso puedes hacerlo desde la hoja de estilos (CSS) estableciendo el par atributo-valor display: none para todos los bloques. La clase es fundamental ya que, mediante CSS, hará visible al bloque elegido.

DEMO

__________________
«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

Última edición por Alexis88; 05/03/2018 a las 12:12 Razón: Corrección