Foros del Web » Programando para Internet » Javascript »

generar variables dinamicamente

Estas en el tema de generar variables dinamicamente en el foro de Javascript en Foros del Web. como hago para crear variables al azar. pues no al azar sino pues digamos en un for para que quede var1 var2 varN...
  #1 (permalink)  
Antiguo 14/05/2009, 08:37
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 16 años, 5 meses
Puntos: 75
generar variables dinamicamente

como hago para crear variables al azar. pues no al azar sino pues digamos en un for para que quede var1 var2 varN
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175
  #2 (permalink)  
Antiguo 14/05/2009, 08:40
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: generar variables dinamicamente

No entendí muy bien el ejemplo que pusiste. En todo caso Math.random() te puede servir.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 14/05/2009, 08:44
 
Fecha de Ingreso: abril-2008
Mensajes: 141
Antigüedad: 16 años
Puntos: 0
Respuesta: generar variables dinamicamente

Que yo sepa no se pueden crear nombres de variables en proceso de ejecucion.

Si quieres tener var1, var2, ..., varN variables tienes que usar un array de n casillas.
  #4 (permalink)  
Antiguo 14/05/2009, 08:46
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: generar variables dinamicamente

Hola, GagleKas, sí se puede colgando del objeto window. Por ejemplo:
Código Javascript:
Ver original
  1. var numero = 1;
  2. window["variable" + numero] = "valor";
  3. alert(variable1);
Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 14/05/2009, 08:49
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: generar variables dinamicamente

mmm, mis dedos son muy lentos :( este era el codigo que iba a mostrar, parecido al de David.
Código:
var gen = 0;
genVar = function(){
window['var' + gen++] = undefined;
}

Última edición por zerokilled; 14/05/2009 a las 08:49 Razón: modificacion de mensaje
  #6 (permalink)  
Antiguo 14/05/2009, 08:49
 
Fecha de Ingreso: mayo-2009
Ubicación: DF
Mensajes: 39
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: generar variables dinamicamente

Creo que te refieres a lo siguiente:

Código:
for (i=1;i<=5;i++)
{
eval("numero"+i+"="i*5);
}
Ahora ya definimos las variables numero1, numero2... hasta la numero5

Y ya puedes usarlas en tu script

Código:
document.write(numero5);
Checa la documentacion de eval
  #7 (permalink)  
Antiguo 14/05/2009, 08:55
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 16 años, 5 meses
Puntos: 75
Respuesta: generar variables dinamicamente

pero y entonces puedo usar variable1 (segun el codigo dado por David) y me las lee bien? y si quiero guardar ahi un input que tambien se genero dinamicamente me saca siempre un error...

me hago entender?
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175
  #8 (permalink)  
Antiguo 14/05/2009, 08:56
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: generar variables dinamicamente

Si muestras el código de lo que estás intentando y está fallando será más fácil ver el problema.

variable1 la puedes usar sin problema.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 14/05/2009, 09:01
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 16 años, 5 meses
Puntos: 75
Respuesta: generar variables dinamicamente

no, el problema es que aun no uso nada por que no logro entender como hacerlo, lo que pasa es que yo genero una consulta con php y el segun los campos que hayan en la base de datos pues me hace N inputs, que los hago desde php (echo "<input...) entonces tengo una variable $i que es el encargado de saber cuantos inputs cree, cuando le doy clic en enviar, el me va a hacer una validacion, le mando a la funcion de javascript $i, sabiendo que todos los campos se llaman campo$i entonces cuando la funcion toma ese $i, lo toma como i pero no se como obtener el valor de todos los campos campo$i desde javascript.
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175
  #10 (permalink)  
Antiguo 14/05/2009, 09:42
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 16 años, 5 meses
Puntos: 75
Respuesta: generar variables dinamicamente

listo ya la pille, en el html hago esto:

Código html:
Ver original
  1. <input type="button" onClick="validar(<?php echo $num; ?>)">

sabiendo que $num es como se llaman los campos, en este caso cumple$num (cumple1, cumple2, cumpleN).

en la funcion hago lo siguiente:

Código javascript:
Ver original
  1. function validar(num){
  2.   for(j=1;j<=num;j++){
  3.     window['cumple']='cumple'+j;
  4.     window['campo']=document.getElementById(cumple).value;/*en la variable campo ya queda el valor de cada campo 'cumple'*/
  5.   }
  6. }

gracias a todos por su ayuda
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175
  #11 (permalink)  
Antiguo 14/05/2009, 10:11
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: generar variables dinamicamente

a ver si entiendo el asunto. tu necesidad de variables dinamicas es para tener referencia a cada elemento creado por php. mi opinion es que te olvides del esquema que tienes pensado porque me parece mas complicado de las soluciones actuales, ha no ser que tengas una razon mayor para hacerlo de esa forma.

en el navegador, cuando mas de un elemento contiene el mismo valor en el atributo name, el DOM crea lo que se conoce como una coleccion de elementos (HTMLCollection), un objeto similar a un array salvo que tiene diferentes metodos. de modo que la mejor alternativa es asignarle el mismo nombre a aquellos campos que tu quieres tener acceso en javascript. por supuesto, con un bucle puedes iterar la coleccion. desde javascript, accesarias a ellos con un codigo similar a:
Código:
document.nombre_formulario.nombre_elemento_input[numero].value;
ahora bien, tengo la duda si luego dicho formulario sera procesado por PHP. de ser el caso tenemos un pequeño problema. cuando el query de una consulta contiene nombre iguales PHP solo puede leer el ultimo valor. por ejemplo, en el siguiente query ?nombre=yo&nombre=tu&nombre=el&nombre=ella, php solo sera capaz de leer la porcion en azul. para solucionarlo, los nombres deben estar compuesto con llaves al final para que se cree un array en PHP. tomando el ejemplo anterior seria como sigue. ?nombre[]=yo&nombre[]=tu&nombre[]=el&nombre[]=ella.

aunque ya esta solucionado para PHP, trae otro problema para javascript. se trata que las llaves ([]) no pueden formar parte de un identificador porque ellas contienen un signficado particular para javascript. es decir, lo siguiente produce error:
Código:
document.nombre_formulario.nombre_elemento_input[][numero].value;
por suerte, javascript admite una alternativa en la sintaxis para acceder a aquellos identificadores mal formados. lo conozco como sintaxis de array asociado, algo bien parecido como crear array asociados en php. nota: javascript no tiene soporte para array asociados. siempre que veas la sintaxis, es la alternativa a la sintaxis de punto en los objetos. por tanto, la solucion en javascript es como sigue:
Código:
document.nombre_formulario['nombre_elemento_input[]'][numero].value;
detalle adicional para proposito de conocimiento: en javascript tu puedes alternar la sintaxis por completo aunque no suele ser practico para la lectura del ojo. en todo caso, no deja de ser valido. por ejemplo, el codigo anterior se pudo haber escrito de la siguiente forma:
Código:
document['nombre_formulario']['nombre_elemento_input[]'][numero]['value'];

Última edición por zerokilled; 14/05/2009 a las 10:16
  #12 (permalink)  
Antiguo 14/05/2009, 10:18
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 16 años, 5 meses
Puntos: 75
Respuesta: generar variables dinamicamente

no men, ya se soluciono, lo habias visto de otro lado... pero lo que usaba es que no se mandaba nada por url, sino q generaba inputs con ID diferentes pero parecidos, solo los diferenciaba un numero al final, pero no sabia como obtener ese valor. pero ya lo solucione gracias al codigo que me dio David y tu alla arriba :D
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175
  #13 (permalink)  
Antiguo 25/05/2011, 13:27
 
Fecha de Ingreso: febrero-2011
Mensajes: 3
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: generar variables dinamicamente

Lobo: una pregunta. yo llegue a hacer lo que tu hiciste.
cree las variables dinamicas, pero mi pregunta es :
Como lograste procesar las variables asociadas.
o sea: tambien creaste algo asi:
<?php
$num = $_POST["num"];
$a = array();
for( $i=1 ; $i < $num ; $i++){
$a[$i] = $num$i;
}
?>

o como le hago??
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 03:03.