Foros del Web » Programando para Internet » Javascript »

Mostrar Ocultar TIPOS de Capas!! No es lo que parece...

Estas en el tema de Mostrar Ocultar TIPOS de Capas!! No es lo que parece... en el foro de Javascript en Foros del Web. Hola a todos, resulta que necesito la siguiente aplicación en javascript, y estoy hecho un lio. Necesito que, a traves de unos enlaces llamados ESPAÑOL, ...
  #1 (permalink)  
Antiguo 30/11/2006, 05:07
 
Fecha de Ingreso: abril-2005
Mensajes: 13
Antigüedad: 19 años
Puntos: 0
Mostrar Ocultar TIPOS de Capas!! No es lo que parece...

Hola a todos,

resulta que necesito la siguiente aplicación en javascript, y estoy hecho un lio. Necesito que, a traves de unos enlaces llamados ESPAÑOL, INGLES, ALEMAN (asi hasta nueve idiomas...) mostrar u ocultar un grupo de capas que pertenecen a ese idioma....

Aqui va el codigo...

<html>
<head>
<script type="text/javascript">
function MostrarIdioma(idioma) {
// COMO DEBE FUNCIONAR: OCULTAR TODAS LAS CAPAS DE IDIOMAS PARA LUEGO MOSTRAR LA DEL IDIOMA SELECCIONADO
var elementos = document.getElementByID('lang');
elementos.style.display = "none";

var elementos2 = document.getElementsByName(idioma);
for (i = 0; i< elementos2.length; i++) {
if(navigator.appName.indexOf("Microsoft") > -1){
var visible = 'block'
} else {
var visible = 'table-row';
}
elementos2[i].style.display = visible;
}
}
</script>
</head>
<body>

<a href="javascript:MostrarIdioma('es')">Español</a> | <A href="javascript:MostrarIdioma('en')">Ingles</a><br>

<div name="es" id="lang">ESTA ES LA CAPA DE ESPAÑOL 1</div>
<div name="es" id="lang">ESTA ES LA CAPA DE ESPAÑOL 2</div>
<div name="en" id="lang" style="display:none;">ESTA ES LA CAPA DE INGLES 1</DIV>
<div name="en" id="lang" style="display:none;">ESTA ES LA CAPA DE INGLES 2</DIV>
<div name="al" id="lang" style="display:none;">ESTA ES LA CAPA DE ALEMAN 1</DIV>
<div name="al" id="lang" style="display:none;">ESTA ES LA CAPA DE ALEMAN 2</DIV>

</body>
</html>
Como es obvio, el codigo no me funciona....

Gracias por vuestra ayuda!!!!
  #2 (permalink)  
Antiguo 30/11/2006, 06:36
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

Tienes algunas cosas mal...

Un id debe ser único, así que no vale como lo tienes... si se trata de capas (elementos div), puedes recorrer la colección (array) desde un elemento padre (preferentemente el inmediato superior que en tu ejemplo parece ser el body...)
Y ya que se trata de idiomas, podrías definir el atributo lang para discriminar...

Y sobre mostrar ocultar capas, creo que es preferible usar el estilo display con los valores hidden/block:

function mostrarIdioma(idioma) {
elementos = document.body.getElementsByTagName("div");
for (var i = 0, total = elementos.length; i < total; i ++)
elementos[i].style.display = (elementos[i].lang == idioma) ? "block" : "none";
}

Por cierto, creo que tengo algo como lo que pides en esta página: Página web del "Bar La Cabaña".. pinchando en las banderas del marco izquierdo se actualizan los contenidos del derecho...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 30/11/2006, 09:41
 
Fecha de Ingreso: abril-2005
Mensajes: 13
Antigüedad: 19 años
Puntos: 0
Gracias caricatos!!!

Funciona a la perfección, pero necesita una mejora....

La cuestión es que nó solo existen esos elementos DIVS de los idiomas en la página, y eso me crea problemas...

he probado con getElementsByName llamando a cada capa IDIOMA, pero nada....

alguna otra idea??


Gracias!

Aqui el codigo:

<html>
<head>
<script type="text/javascript">
function mostrarIdioma(idioma) {
elementos = document.body.getElementsByTagName("div");
for (var i = 0, total = elementos.length; i < total; i ++)
elementos[i].style.display = (elementos[i].lang == idioma) ? "block" : "none";
}
</script>
</head>
<body>

<a href="javascript:mostrarIdioma('es')">Español</a> | <A href="javascript:mostrarIdioma('en')">Ingles</a><a href="javascript:mostrarIdioma('es')">Español</a><br>
<div lang="es">ESTA ES LA CAPA DE ESPAÑOL 1</div>
<div lang="es">ESTA ES LA CAPA DE ESPAÑOL 2</div>
<div lang="en" style="display:none;">ESTA ES LA CAPA DE INGLES 1</DIV>
<div lang="en" style="display:none;">ESTA ES LA CAPA DE INGLES 2</DIV>
<div lang="al" style="display:none;">ESTA ES LA CAPA DE ALEMAN 1</DIV>
<div lang="al" style="display:none;">ESTA ES LA CAPA DE ALEMAN 2</DIV>
</body>
</html>
  #4 (permalink)  
Antiguo 02/12/2006, 05:06
 
Fecha de Ingreso: abril-2005
Mensajes: 13
Antigüedad: 19 años
Puntos: 0
Alguna idea?
  #5 (permalink)  
Antiguo 02/12/2006, 08:12
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola Karmico

Entiendo que, además de divs, tienes párrafos que mostrar/ocultar. Prueba este código:
Código PHP:
<html>
<
head>
<
script type="text/javascript">
function 
mostrarIdioma(idioma) {
elementos document.body.getElementsByTagName("*");
for (
i=0ele elementos[i]; i++)
  if (
ele.lang !='')
    
ele.style.display = (elementos[i].lang == idioma) ? "block" "none";
}
</script>
</head>
<body>

<a href="javascript:mostrarIdioma('es')">Español</a> | <A href="javascript:mostrarIdioma('en')">Ingles</a><a href="javascript:mostrarIdioma('es')">Español</a><br>
<div lang="es">ESTA ES LA CAPA DE ESPAÑOL 1</div>
<div lang="es">ESTA ES LA CAPA DE ESPAÑOL 2</div>
<p lang="en">Párrafo en inglés</p>
<p lang="es">Párrafo en español</p>
<div lang="en" style="display:none;">ESTA ES LA CAPA DE INGLES 1</DIV>
<div lang="en" style="display:none;">ESTA ES LA CAPA DE INGLES 2</DIV>
<div lang="al" style="display:none;">ESTA ES LA CAPA DE ALEMAN 1</DIV>
<div lang="al" style="display:none;">ESTA ES LA CAPA DE ALEMAN 2</DIV>
</body>
</html> 
Saludos,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:16.