Ver Mensaje Individual
  #4 (permalink)  
Antiguo 25/07/2013, 11:09
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: Cómo recuperar variables con nombres dinámicos

Hola Aijoona y chwc:

Antes que nada, gracias por contestar:

Probé la solución que me indicaron, sin embargo no me funcionó

Encontré esta página donde me ofrecen la misma solución:

http://www.etnassoft.com/2011/01/05/...-alternativas/

Sin embargo al querer implementarla simplemente no se asigna el valor a la variable, hice un pequeño ejemplo con una página JSP así:

Código HTML:
Ver original
  1. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  2. <!DOCTYPE html>
  3.   <head>
  4.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5.     <title>JSP Page</title>
  6.     <script>
  7.       function prueba(indice)
  8.       {
  9.         var ren1 = 'nada';
  10.         alert(indice);
  11.         alert(ren1);
  12.         //eval('ren' + indice + '=\'algo\'');
  13.         window['ren' + indice] = 'algo';
  14.         alert("ren1: " + ren1);              
  15.       }
  16.     </script>
  17.   </head>
  18.   <body>
  19.     <h1>Hello World!</h1>
  20.     <form id="forma">
  21.       <input type="button" onclick="prueba('1');" value="Prueba" />
  22.     </form>
  23.   </body>
  24. </html>


Cuando lo ejecuto con la función window simplemente no actualiza el valor, al hacer el último alert me regresa como resultado:

Código:
ren1: nada
Es decir, no me actualiza el valor de la variable... si observan tengo comentada una línea donde utilizo EVAL, que es otra de las alternativas que encontré en la página que mencioné al inicio... cuando utilizo EVAL en lugar de window si me ejecuta correctamente el resultado y obtengo lo siguiente:

Código:
ren1: algo
En realidad no veo nada distinto a lo que aquí me comentan, no sé por qué razón la función window no funciona... alguno de ustedes sabe por qué

Por lo pronto utilizaré la forma EVAL que si funciona, aunque tengo algo de recelo por lo que aparece al inicio del mismo documento:

Cita:
“eval es el mal: la función eval es la mayor característica en el mal uso de Javascript. Evítala.”
Douglas Crockford, JavaScript: The Good Parts
Saludos!
Leo