Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Problema con argumentos

Estas en el tema de Problema con argumentos en el foro de Javascript en Foros del Web. Hola, La verdad soy un novato en js así que pido disculpas desde ya si la solución a este problema es muy obvia. Tengo la ...
  #1 (permalink)  
Antiguo 05/02/2013, 15:49
 
Fecha de Ingreso: agosto-2009
Mensajes: 349
Antigüedad: 15 años, 3 meses
Puntos: 8
Problema con argumentos

Hola,

La verdad soy un novato en js así que pido disculpas desde ya si la solución a este problema es muy obvia.

Tengo la siguiente función:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.     function despliega(valor) {
  3.         if(document.getElementById("+valor+").style.visibility=='visible') {
  4.             document.getElementById("+valor+").style.visibility='hidden';
  5.         } else {
  6.             document.getElementById("+valor+").style.visibility='visible';
  7.         }
  8.     }
  9. </script>

Intento llamarla al hacer clic en un link, de la siguiente manera:

Código HTML:
Ver original
  1. <a href="#" onclick="despliega("register-container");" title="Despliega/Oculta el formulario de registro">Registrate</a>

Lo cual no da ningún resultado. Al principio, cuando la escribí, no declaraba ningún argumento (lo que en la función llamo 'valor'), simplemente indicaba el id del div con el que quería trabajar la función y funcionaba perfectamente.

Ahora intento acomodarlo de esta manera porque necesito usar la misma función en más de un link y no me parece nada práctico crear una varias funciones con distintos nombres y que hagan lo mismo.

Espero vuestra ayuda.
  #2 (permalink)  
Antiguo 05/02/2013, 15:56
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 6 meses
Puntos: 528
Respuesta: Problema con argumentos

No podrías hacer el llamado de la función así, por la sintáxis que usas:
onclick="despliega("register-container");"

debe ser

onclick="despliega('register_container');"

es decir no puedes tener comillas dentro de comillas

Hasta donde recuerdo, los id de los objetos no deberían contener el guión medio, aunque quizá me equivoque, ya que nunca los uso así.
  #3 (permalink)  
Antiguo 05/02/2013, 16:03
 
Fecha de Ingreso: agosto-2009
Mensajes: 349
Antigüedad: 15 años, 3 meses
Puntos: 8
Respuesta: Problema con argumentos

Gracias por responder ocp001a,

He cambiado el nombre del div a register_container y también las dobles comillas por comillas simples tal como me indicaste, sin embargo sigo sin tener resultado alguno.

Yo creo que el problema está al llamar el argumento en la function de la forma en la que lo hago ("+valor+"), he buscado por todas partes como hacerlo pero no encuentro respuesta alguna.
  #4 (permalink)  
Antiguo 05/02/2013, 16:08
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 6 meses
Puntos: 528
Respuesta: Problema con argumentos

bueno, sí, además faltaba eso:

if(document.getElementById(valor).style.visibility =='visible')


cuando recibes el parámetro valor, dentro de la función ya es una cadena, por lo que no hay que meterla dentro de otra.


Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.     function despliega(valor) {
  3.         if(document.getElementById(valor).style.visibility=='visible') {
  4.             document.getElementById(valor).style.visibility='hidden';
  5.         } else {
  6.             document.getElementById(valor).style.visibility='visible';
  7.         }
  8.     }
  9. </script>
  #5 (permalink)  
Antiguo 05/02/2013, 16:12
 
Fecha de Ingreso: agosto-2009
Mensajes: 349
Antigüedad: 15 años, 3 meses
Puntos: 8
Respuesta: Problema con argumentos

Muchas gracias! ya está solucionado.

Te comento que también probé con el antiguo nombre del div (con el guión al medio) y no dio ningún problema.

Saludos!

Etiquetas: argumentos, formulario, funcion, js
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 00:43.