JavaScript - DOM-JavaScript, imprimir SÓLO un idioma al cambiar la opción de un SELECT

 
Vista:

DOM-JavaScript, imprimir SÓLO un idioma al cambiar la opción de un SELECT

Publicado por Dani (3 intervenciones) el 03/05/2017 15:53:39
Saludos, un compañero me ha comentado que acudió a este lugar y le ayudasteis, por ello ahora soy yo el que acude a vosotros. El título no se si es muy descriptivo, intentaré explicarme.

Andamos en clase creando una web con DOM y JavaScript. La tengo finalizada, sin embargo me surge una duda o más bien una inquietud. Tengo una web (todos en clase la tenemos igual) y en un desplegable hay cuatro opciones...

1- Elije idioma
2- Castellano
3- Inglés
4- Valenciano

... el asunto está en que si yo elijo un idioma me lo muestra y el resto está oculto, hasta ahí bien, pero si después elijo otro idioma SIN RECARGAR la web (F5) me sigue manteniendo en pantalla el idioma seleccionado anteriormente. ¿Habría algún modo de que eso no sucediese? Es decir... Si elijo Castellano que sea vea Castellano, pero al elegir después Valenciano, que se vea Valenciano y desaparezca el contenido en Castellano.

He probado con if, pero no termino de cuadrarlo y quizás esté afrontándolo mal. ¿Podríais echarme una mano? No se si estaré adelantándome a la clase pero llevo dos o tres días "encabezonado" en intentar sacarlo y no lo consigo. Tampoco termino de encontrar ayuda en la web.

Este es el html:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
 
<html version="-//W3C//DTD XHTML 1.1//EN"
      xmlns="http://www.w3.org/1999/xhtml" xml:lang="es"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.w3.org/1999/xhtml
                          http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd">
 
  <head>
 
   <link rel="stylesheet" type="text/css" href="ejemplo2.css" media="screen"/>
   <script type="text/javascript" src="ejemplo2.js"></script>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
   <title>Selección Idiomas mediante DOM</title>
 
  </head>
 
  <body>
 
  	<div>
 		<select id="selIdioma" onchange="seleccion();">
		  <option value="idioma" selected> Idioma/Language/Idioma </option>
		  <option value="spanish"> Castellano </option>
		  <option value="english"> English </option>
		  <option value="valencian"> Valencià </option>
		</select>
	</div>
 
	<div class="spanish invisible">
		<h1>Ejemplo de selección de Idiomas mediante DOM</h1>
	    	<h2>Documento en Castellano</h2>
		<p>Usted ha elegido contemplar el documento en Castellano.</p>
	</div>
 
	<div class="english invisible">
		<h1>DOM Language Selection Example</h1>
	    	<h2>English Document</h2>
		<p>You have chosen to contemplate the document in English.</p>
	</div>
 
	<div class="valencian invisible">
		<h1>Exemple de selecció d'Idiomes per mitjà de DOM</h1>
	        <h2>Document en Valencià</h2>
		<p>Vosté ha triat contemplar el document en Valencià.</p>
	</div>  

  </body>

</html>

Este es mi archivo JS:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function seleccion(){
	var selectBox = document.getElementById("selIdioma");
	var selectValue = selectBox.options[selectBox.selectedIndex].value;
	mostrar(selectValue);
	}
 
function mostrar(lengua){
	var selectLengua = document.getElementsByClassName(lengua);
 
	for (var i=0; i<selectLengua.length; i++){
 
		selectLengua[i].setAttribute("class", selectLengua+" visible");
 
	}
}

Y finalmente mi breve CSS:

1
2
3
4
5
6
.invisible{
display: none;
}
.visible{
display: block;
}

Se acepta cualquier consejo y por supuesto os doy las gracias por leerme y por lo que creáis conveniente comentar. Un saludo y reitero mis gracias!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.162
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

DOM-JavaScript, imprimir SÓLO un idioma al cambiar la opción de un SELECT

Publicado por xve (2100 intervenciones) el 03/05/2017 20:51:19
Hola Dani, he modificado tu código de javascript para que guarde el último seleccionado, para posteriormente eliminarlo cuando selecciones otro valor.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script>
var ultimoSeleccionado="";
function seleccion(){
	var selectBox = document.getElementById("selIdioma");
	var selectValue = selectBox.options[selectBox.selectedIndex].value;
	mostrar(selectValue);
	}
 
function mostrar(lengua){
	// desmarcamos el anterior si lo hubiera
	if(ultimoSeleccionado)
		document.getElementsByClassName(ultimoSeleccionado)[0].setAttribute("class",ultimoSeleccionado+" invisible");
	ultimoSeleccionado=lengua;
 
	var selectLengua = document.getElementsByClassName(lengua);
 
	selectLengua[0].setAttribute("class", lengua+" visible");
}
</script>

Coméntanos si te sirve, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

DOM-JavaScript, imprimir SÓLO un idioma al cambiar la opción de un SELECT

Publicado por Dani (3 intervenciones) el 03/05/2017 21:24:59
Mil gracias, funciona a las mil maravillas... aunque tengo unas dudas:

1- El IF se va a cumplir SIEMPRE porque la variable SIEMPRE existe, ¿verdad?
2- ultimoSeleccionado=lengua; No termino de entender esta instrucción, qué hace exactamente?

PD- Ya se que se le asigna el valor de lengua a ultimoSeleccionado y se que si lo borras no funciona pero... cuál es la función en ese contexto y en mi ejercicio?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.162
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

DOM-JavaScript, imprimir SÓLO un idioma al cambiar la opción de un SELECT

Publicado por xve (2100 intervenciones) el 04/05/2017 07:06:51
Hola Dani, te comento tus dudas..

1.- el if solo se cumple si la variable tiene valor... al no tener nada la primera vez no se cumple.

2.- ultimoSeleccionado=lengua; lo que hace es obtener el valor del último idioma seleccionado para cuando vuelvas a seleccionar otro idioma, se pueda esconder el anterior idioma seleccionado. Es decir, siempre guarda el último visible para poder ponerlo invisible la próxima vez que selecciones otro idioma

No se si me he sabido explicar correctamente...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

DOM-JavaScript, imprimir SÓLO un idioma al cambiar la opción de un SELECT

Publicado por Dani (3 intervenciones) el 04/05/2017 08:22:03
Todo correcto, mil gracias!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar