Foros del Web » Programando para Internet » Javascript »

Pero si es 1 variable global?!

Estas en el tema de Pero si es 1 variable global?! en el foro de Javascript en Foros del Web. Hola a tod@s! Tengo un pequeno problema que no logro entender: este script no me funciona: Código PHP: < html > < head > < ...
  #1 (permalink)  
Antiguo 21/06/2008, 10:13
 
Fecha de Ingreso: noviembre-2007
Mensajes: 194
Antigüedad: 16 años, 5 meses
Puntos: 2
Pregunta Pero si es 1 variable global?!

Hola a tod@s!

Tengo un pequeno problema que no logro entender:

este script no me funciona:
Código PHP:
<html>
<
head>
<
script type="text/javascript">

document.getElementById('c').value;

function 
prueba(){
return 
alert (a);
}

</script>
</head>
<body>

<input type="text" id="c" />

<button onclick="prueba();">probar</button>
</body>
</html> 
En cambio, este sí:
Código PHP:
<html>
<
head>
<
script type="text/javascript">

function 
prueba(){
document.getElementById('c').value;
return 
alert (a);
}

</script>
</head>
<body>

<input type="text" id="c" />

<button onclick="prueba();">probar</button>
</body>
</html> 
Mi pregunta es: ?por qué no me funciona el primer script?
Defino la variable como global, por lo que tendría que funcionar.

Si alguien sabe la respuesta a este pequeno enigma agradezco su ayuda.

Saludos!
  #2 (permalink)  
Antiguo 21/06/2008, 10:22
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Respuesta: Pero si es 1 variable global?!

Hola donfalcone

Lo que ocurre es que la línea a = document.getElementById('c').value; se está ejecutando antes de que ser cree el input

Saludos,
  #3 (permalink)  
Antiguo 21/06/2008, 10:43
Avatar de johnj  
Fecha de Ingreso: marzo-2007
Mensajes: 65
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Pero si es 1 variable global?!

Estoy de acuerdo con JavierB en la línea a = document.getElementById('c').value; del primer script estas intentando obtener un elemento que en ese instante de la ejecución no existe.
En cambio en el segundo script se supone que se ejecuta en la función prueba y por supuesto este elemento ya existe.
  #4 (permalink)  
Antiguo 21/06/2008, 11:33
 
Fecha de Ingreso: noviembre-2007
Mensajes: 194
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Pero si es 1 variable global?!

Hola!

Gracias por vuestras respuestas johnj y JavierB,... visto lo visto. Como puedo hacerlo, para que esa variable sea global?

??Tengo alguna alternativa??

Muchas gracias
  #5 (permalink)  
Antiguo 21/06/2008, 11:43
Avatar de johnj  
Fecha de Ingreso: marzo-2007
Mensajes: 65
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Pero si es 1 variable global?!

Cita:
Iniciado por donfalcone Ver Mensaje
Hola!

Gracias por vuestras respuestas johnj y JavierB,... visto lo visto. Como puedo hacerlo, para que esa variable sea global?

??Tengo alguna alternativa??

Muchas gracias

Pues la variable ya es global pero creo que a lo que te refieres es que el elemento se pueda obtener en cualquier momento:


Código:
window.onload = function()
{
var a = document.getElementById('c');
}
En ves de solo:

Código:
a = document.getElementById('c');
Así solo tendras que hacer lo siguiente en la función prueba :

Código:
function prueba(){
return alert (a);
}
Y quedara la variable accesible en cualquier momento de la ejecución.

Quedo pendiente.
  #6 (permalink)  
Antiguo 21/06/2008, 11:44
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Respuesta: Pero si es 1 variable global?!

Hola de nuevo.

Pon como variable global: var a;

y le asignas el valor en el evento onload

<body onload = "a = document.getElementById('c').value">

Saludos,
  #7 (permalink)  
Antiguo 21/06/2008, 11:54
 
Fecha de Ingreso: noviembre-2007
Mensajes: 194
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Pero si es 1 variable global?!

Hola!

Gracias por la rapidez, pero me temo que no me sirve la respuesta, ya que cuando la página se carga, el valor del input aun no se ha introducido.
Además me gustaría, que captará los nuevos valores del input (si se borra, si se cambia, etc.)

Alguna alternativa??

Gracias por vuestra ayuda.

Saludos!!
  #8 (permalink)  
Antiguo 21/06/2008, 12:25
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Respuesta: Pero si es 1 variable global?!

Hola de nuevo.

Si lo hubieras explicado al principio...

Prueba esto:

Código:
<input type="text" onchange = "a=this.value">
Saludos,
  #9 (permalink)  
Antiguo 21/06/2008, 12:32
Avatar de johnj  
Fecha de Ingreso: marzo-2007
Mensajes: 65
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Pero si es 1 variable global?!

JavierB pero con onchange hay que salir del input para que se genere el evento.

La pregunta es: ¿ Es lo mismo que hacer con onblur ?

Saludos
  #10 (permalink)  
Antiguo 21/06/2008, 12:41
 
Fecha de Ingreso: noviembre-2007
Mensajes: 194
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Pero si es 1 variable global?!

Hola!

Gracias a ambos.

Lo que comentabas, JavierB, me funciona!

Gracias.
Y disculpa si no lo expresé con suficiente claridad :)
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 22:29.