Foros del Web » Programando para Internet » Javascript »

Crear variables dinámicas

Estas en el tema de Crear variables dinámicas en el foro de Javascript en Foros del Web. He creado un formulario y quiero que la gente compruebe los datos antes de enviarlo al servidor. Dinamicamente creo un div,una tabla y le voy ...
  #1 (permalink)  
Antiguo 20/12/2011, 12:52
 
Fecha de Ingreso: marzo-2007
Mensajes: 58
Antigüedad: 17 años, 2 meses
Puntos: 0
Crear variables dinámicas

He creado un formulario y quiero que la gente compruebe los datos antes de enviarlo al servidor.
Dinamicamente creo un div,una tabla y le voy creando las filas y las celdas mediante con un for. Estoy utilizando evil, que nunca había utilizado pero está dando error.
El código resumido es:
Código Javascript:
Ver original
  1. function vista_previa(){
  2.    
  3.     document.getElementById('paso2').style.display="none";
  4.    
  5.    
  6.     var nom_bebe=document.mod_datos.nom_bebe.value;
  7.      var nom_padre = document.mod_datos.nom_padre.value;
  8.     var ape_padre=document.mod_datos.ape_padre.value;
  9.     var nom_madre=document.mod_datos.nom_madre.value;
  10.     var ape_madre=document.mod_datos.ape_madre.value;
  11.     var fecha_nac=document.mod_datos.fecha_nac.value;
  12.     var ciudad_nac=document.mod_datos.ciudad_nac.value;
  13.     var prov_nac=document.mod_datos.prov_nac.value;
  14.     var comentarios=document.mod_datos.comentario.value;
  15.     fi=document.getElementById("content");
  16.    
  17.     div_creado=document.createElement('div');
  18.     div_creado.id="preview";
  19.     fi.appendChild(div_creado);
  20.    
  21.     /*añadir variables*/
  22.    
  23.   // Crear <table> y sus dos atributos
  24. var tabla = document.createElement('table');
  25. tabla.setAttribute('id', 'otraTabla');
  26.  
  27. //Crear elementos de la tabla a mano
  28. var fila0=tabla.insertRow(0);
  29. var celda0=fila0.insertCell(0);
  30. celda0.innerHTML="Nombre bebe     ";
  31. var celda1=fila0.insertCell(1);
  32. celda1.innerHTML=nom_bebe;
  33. //Crear elementos de la tabla dinamicamente
  34. for(var i=0; i<9; i++){
  35.     eval("fila"+i+"="+tabla.insertRow(i));
  36.     }
  37.  
  38. div_creado.appendChild(tabla);
  39.     };
luego dentro del for pondría otro for para crear dos celdas por cada fila.
Y me da el error:

Error: missing ] after element list
fila0=[object HTMLTableRowElement]

A mano lo puedo hacer, pero es que sé que con un for lo hago en un momento.
Gracias de antemano.
  #2 (permalink)  
Antiguo 20/12/2011, 13:17
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Crear variables dinámicas

Hola:

Las variables podrían considerarse elementos del objeto window, así que si quieres crear la variable var1, podrías poner:

window["var" + 1] = "Hola var1";

... Y lo pruebas con... por ejemplo:

alert(var1);

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 20/12/2011, 13:29
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: Crear variables dinámicas

buenas,
eventualmente el problema es con eval. fijate que cuando concatenas el string obtienes el siguiente string el cual javascript intentará evaluarlo como código: fila0=[object HTMLTableRowElement]. lo que javascript entiende es que estas creando un array literal pero esta mal formado porque entre object HTMLTableRowElement debe haber una coma. en fin, el problema es porque estas concatenando un string con un objeto, produciendo un resultado similar al anterior. lo que tenias que hacer era ingresar el código como parte del string. "fila"+i+"=tabla.insertRow("+i+")"

de todos modos, no creo que funcione porque eval se interpreta en un contexto distinto. en la mayoría de los casos, eval trae más problema que soluciones. por lo que te recomendaría replantear el procedimiento. una forma que se me ocurre es crear un objeto donde las propiedades sean el nombre que quieras asignar a la celda. y el valor de la propiedad sea el contenido que quieres mostrar respecto a dicha fila. o sea, por ejemplo el nombre de la propiedad es "Nombre bebe" y el valor es el texto contenido en document.mod_datos.nom_bebe.value. luego con un bucle for/in iteras el objeto para crear las filas con sus celdas.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #4 (permalink)  
Antiguo 20/12/2011, 13:35
 
Fecha de Ingreso: marzo-2007
Mensajes: 58
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Crear variables dinámicas

caricatos:
Fantástico, muy bien. Y no necesito eval que tiene mala fama.
Para simplificar el código todavía más como los elementos del formulario forman parte de un array podría escribirlo en una sola línea.
Muchas gracias por la ayuda.
zerokilled:
No sé mucho sobre objetos en javascript, así que parte de la respuesta no la he entendido bien , pero en el segundo párrafo me has solucionado el problema totalmente .
Muchas gracias a ambos. No tengo palabras para agradecerlo.

Última edición por sarape; 20/12/2011 a las 13:41

Etiquetas: formulario, html, variables
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 01:49.