Foros del Web » Programando para Internet » Javascript »

switch no funciona

Estas en el tema de switch no funciona en el foro de Javascript en Foros del Web. Saludos Tengo la siguiente función de js: <script language="javascript" type="text/javascript"> function alternar(opc){ switch (opc) { alert(opc); case '1': document.getElementById('p1').style.display=''; document.getElementById('p2').style.display='none' ; document.getElementById('p3').style.display='none' ; document.getElementById('p4').style.display='none' ; ...
  #1 (permalink)  
Antiguo 13/05/2006, 20:09
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 8 meses
Puntos: 7
switch no funciona

Saludos

Tengo la siguiente función de js:

<script language="javascript" type="text/javascript">
function alternar(opc){
switch (opc) { alert(opc);
case '1':
document.getElementById('p1').style.display='';
document.getElementById('p2').style.display='none' ;
document.getElementById('p3').style.display='none' ;
document.getElementById('p4').style.display='none' ;
document.getElementById('p5').style.display='none' ;
break;
case '2':
document.getElementById('p1').style.display='none' ;
document.getElementById('p2').style.display='';
document.getElementById('p3').style.display='none' ;
document.getElementById('p4').style.display='none' ;
document.getElementById('p5').style.display='none' ;
break;
case '3':
document.getElementById('p1').style.display='none' ;
document.getElementById('p2').style.display='none' ;
document.getElementById('p3').style.display='';
document.getElementById('p4').style.display='none' ;
document.getElementById('p5').style.display='none' ;
break;
}
}
</script>

y el siguiente código php:

<table align="center" border="0" cellpadding="0" cellspacing="2" class="pestas" style="width:100%">
<tr>
<td><a href="javascript:alternar('1');">Familia</a></td>
<td><a href="javascript:alternar('2');">Dirección</a></td>
<td><a href="javascript:alternar('3');">Representante</a></td>
</tr>
</table>
...
<table align="center" border="1" cellpadding="0" cellspacing="2" id="p1" style="display:none; width:100%">
<tr>
<td>Pestaña 1</td>
</tr>
</table>
<table align="center" border="1" cellpadding="0" cellspacing="2" id="p2" style="display:none; width:100%">
<tr>
<td>Pestaña 2</td>
</tr>
</table>
<table align="center" border="1" cellpadding="0" cellspacing="2" id="p3" style="display:none; width:100%">
<tr>
<td>Pestaña 3</td>
</tr>
</table>

Pero, no funciona...

El objetivo, es simular unas pestañas...

De hecho, el alert dentro del switch, no le llega... sí pongo el alert dentro de la función fuera del switch, entonces si va

Gracias de una
__________________
Gracias de todas todas
-----
Linux!
  #2 (permalink)  
Antiguo 13/05/2006, 22:37
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 4 meses
Puntos: 13
Intenta eliminando las comillas simples que usas en cada CASE:

case 1:
case 2:
etc.
__________________
El conocimiento es libre: Movimiento por la Devolución
  #3 (permalink)  
Antiguo 14/05/2006, 01:54
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:

Ese alert debe dar un error porque las instrucciones deben ubicarse dentro de los "case"

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 14/05/2006, 08:57
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 8 meses
Puntos: 7
Hola...

Éste es el mensaje que me bota la cónsola de js de firefox:

Error: Error in parsing value for property 'display'. Declaration dropped.
Source File: http://localhost/~cesar/ee/
Line: 0

Ya he probado quitando las comillas simples de los valores del case, cambiado por comillas dobles, agregado comillas simples y dobles a la variable en el switch...
__________________
Gracias de todas todas
-----
Linux!
  #5 (permalink)  
Antiguo 14/05/2006, 10:15
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
quitandole esto , funciona en FF y Opera:

Cita:
switch (opc) { alert(opc);
(como ya lo havía dicho Caricatos)

sigue arrojando un error pero es porque falta los objetos con id=p4 y id=p5.

el resto parece funcionar correctamente.

saludos

PD: Lo de las comillas, o las dejas tanto en lallamada a la funcion y el case, o la quitas en los dos.(de ambas formas funciona igual)
__________________
by Capitán Buscapina
.

Última edición por Cap.Buscapina; 14/05/2006 a las 10:26
  #6 (permalink)  
Antiguo 14/05/2006, 10:25
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
Solo alos efectos de proporcionarte otra alternativa probá reemplazar tu funcion por esta:

Cita:
function alternar(opc){
id="p"+opc;
for (x=1;x<5;x++){
document.getElementById('p'+x).style.display=(id== ('p'+x))?"":"none";
}
}
debería cubrir las mismas expectativas.

Tal ves no se adapte a tus necesidades(y el swich si lo haga), pero es solo para ponerte un ejemplo de como simplificar el proceso.

saludos
__________________
by Capitán Buscapina
.
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 08:09.