Ver Mensaje Individual
  #11 (permalink)  
Antiguo 14/05/2009, 10:11
Avatar de zerokilled
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