Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Clonar Campos

Estas en el tema de Clonar Campos en el foro de Javascript en Foros del Web. Hola quiero clonar un un input select @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original var asesor = document. getElementById ( "asesor" ) . cloneNode ( ...
  #1 (permalink)  
Antiguo 01/04/2011, 05:44
 
Fecha de Ingreso: julio-2008
Mensajes: 366
Antigüedad: 15 años, 8 meses
Puntos: 7
Clonar Campos

Hola

quiero clonar un un input select

Código Javascript:
Ver original
  1. var asesor= document.getElementById("asesor").cloneNode(true);
  2.     td5.appendChild(asesor);

pero me manda un error el cual me dice que td5 esta indefinido o es null.


les agradeseria si me dicen por que
  #2 (permalink)  
Antiguo 01/04/2011, 08:07
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Clonar Campos

Hola

Si te marca ese error, es por que la asignación no está bien. Esto puede ser por que no existe el elemento en el documento. También pudiera ser que que aún no está cargado

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 01/04/2011, 17:08
 
Fecha de Ingreso: julio-2008
Mensajes: 366
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: Clonar Campos

oko lo que pasa es que el select lo genera php desde la base de datos, pero la fucnion javascript no es llamada hasta el usuario presiona una imagen por lo tanto el campo ya esta creado y si existe en el dom
  #4 (permalink)  
Antiguo 01/04/2011, 19:20
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 1 mes
Puntos: 192
Respuesta: Clonar Campos

¿Pero dónde obtenés td5? ¿Algo así?

Código Javascript:
Ver original
  1. var td5 = document.getElementById('td5');
  2. var asesor= document.getElementById("asesor").cloneNode(true);
  3. td5.appendChild(asesor);
__________________
nahueljose.com.ar
  #5 (permalink)  
Antiguo 01/04/2011, 19:27
 
Fecha de Ingreso: julio-2008
Mensajes: 366
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: Clonar Campos

no td5 es un row de un atabla
la funcion completa es esta solo que esta muy larga.
Código Javascript:
Ver original
  1. var tbody = document.getElementById(id).getElementsByTagName("TBODY")[0];
  2.     var row = document.createElement("TR");
  3.     var td1 = document.createElement("TD");
  4.     td1.appendChild(document.createElement("<input type=\"text\" id=\"animal["+t+"]\" name=\"animal["+t+"]\"size=\"25\"/>"));
  5.     var td2 = document.createElement("TD");
  6.     td2.appendChild (document.createElement("<input type=\"text\" name=\"precio["+t+"]\" id="+t+" />"));
  7.     var td3 = document.createElement("TD");
  8.     td3.appendChild (document.createElement("<select name=\"tipo_pago["+t+"]\" id="+t+" onChange=\"activar(this)\" >"));
  9.     var td4 = document.createElement("TD");
  10.     td4.appendChild (document.createElement(" <select name=\"tarjeta["+t+"]\" style=\"display:none;\" id="+t+"> "));
  11.    
  12.    
  13.     var option = document.createElement("<option value=\"N/A\"></option>");
  14.     var option2 = document.createElement("<option value=\"Efectivo\"></option>");
  15.     var option3 = document.createElement("<option value=\"Tarjeta\"></option>");
  16.    
  17.    
  18.     var texto1 = document.createTextNode("- - - - - - ");
  19.     var texto2 = document.createTextNode("Efectivo");
  20.     var texto3 = document.createTextNode("Tarjeta");
  21.    
  22.    
  23.     option.appendChild(texto1);
  24.     td3.appendChild(option);
  25.  
  26.     option2.appendChild(texto2);
  27.     td3.appendChild(option2);
  28.  
  29.     option3.appendChild(texto3);
  30.     td3.appendChild(option3);
  31.    
  32.     var option4 = document.createElement("<option value=\"N/A\"></option>");
  33.     var option5 = document.createElement("<option value=\"Banamex\"></option>");
  34.     var option6 = document.createElement("<option value=\"Scotiabank\"></option>");
  35.    
  36.    
  37.     var texto4 = document.createTextNode("- - - - - - ");
  38.     var texto5 = document.createTextNode("Banamex");
  39.     var texto6 = document.createTextNode("Scotiabank");
  40.    
  41.    
  42.     option.appendChild(texto1);
  43.     td3.appendChild(option);
  44.  
  45.     option2.appendChild(texto2);
  46.     td3.appendChild(option2);
  47.  
  48.     option3.appendChild(texto3);
  49.     td3.appendChild(option3);
  50.    
  51.     option4.appendChild(texto4);
  52.     td4.appendChild(option4);
  53.  
  54.     option5.appendChild(texto5);
  55.     td4.appendChild(option5);
  56.  
  57.     option6.appendChild(texto6);
  58.     td4.appendChild(option6);
  59.    
  60.     //var asesor= document.getElementById("asesor").cloneNode(true);
  61.     //td5.appendChild(asesor);
  62.    
  63.     var que = document.getElementById('producto');
  64.     var nuevo = que.cloneNode(true);
  65.     //que.parentNode.appendChild(nuevo);
  66.     td6.appendChild(nuevo);
  67.    
  68.     row.appendChild(td1);
  69.     row.appendChild(td6);
  70.     row.appendChild(td2);
  71.     row.appendChild(td3);
  72.     row.appendChild(td4);
  73.     //row.appendChild(td5);
  74.    
  75.     tbody.appendChild(row);
  #6 (permalink)  
Antiguo 01/04/2011, 19:30
 
Fecha de Ingreso: julio-2008
Mensajes: 366
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: Clonar Campos

Naahuel, gracias tu comentario puder ver mi error,
me hacia falta esta line
var td5 = document.createElement("TD");
ya esta le estaba insertando un td5 un nodo y td5 no existia.

bueno voy a terminar esto y lo pego aqui por si alguien le sirve
  #7 (permalink)  
Antiguo 01/04/2011, 19:33
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 1 mes
Puntos: 192
Respuesta: Clonar Campos

Te estaba por decir que en el código no figuraba la creación de td5, pero pensé que no lo habías puesto completo :P
Bueno que bien que lo descubriste. Saludos.
__________________
nahueljose.com.ar
  #8 (permalink)  
Antiguo 01/04/2011, 20:18
 
Fecha de Ingreso: julio-2008
Mensajes: 366
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: Clonar Campos

Esta muy largo pero es funcional, solo lo tienen que meter en una funcion, y psarle como parametro el id de la tabla
el para metro que se llame id
Código Javascript:
Ver original
  1. var tbody = document.getElementById(id).getElementsByTagName("TBODY")[0];
  2.     var row = document.createElement("TR");
  3.    
  4.     var td1 = document.createElement("TD");
  5.     td1.appendChild(document.createElement("<input type=\"text\" id=\"animal["+t+"]\" name=\"animal["+t+"]\"size=\"25\"/>"));
  6.    
  7.     var td2 = document.createElement("TD");
  8.     td2.appendChild (document.createElement("<input type=\"text\" name=\"precio["+t+"]\" id="+t+" />"));
  9.    
  10.     var td3 = document.createElement("TD");
  11.     var campo = document.createElement("<select name=\"tipo_pago["+t+"]\" id="+t+" onChange=\"activar(this)\" ></select>");
  12.    
  13.     var td4 = document.createElement("TD");
  14.     var lista = document.createElement("<select name=\"tarjeta["+t+"]\" style=\"display:none;\" id="+t+" /> </select>");
  15.    
  16.     var td6 = document.createElement("TD");
  17.     var td5 = document.createElement("TD");
  18.    
  19.     var option = document.createElement("<option value=\"N/A\"></option>");
  20.     var option2 = document.createElement("<option value=\"Efectivo\"></option>");
  21.     var option3 = document.createElement("<option value=\"Tarjeta\"></option>");
  22.    
  23.    
  24.     var texto1 = document.createTextNode("- - - - - - ");
  25.     var texto2 = document.createTextNode("Efectivo");
  26.     var texto3 = document.createTextNode("Tarjeta");
  27.    
  28.    
  29.     option.appendChild(texto1);
  30.     campo.appendChild(option);
  31.  
  32.     option2.appendChild(texto2);
  33.     campo.appendChild(option2);
  34.  
  35.     option3.appendChild(texto3);
  36.     campo.appendChild(option3);
  37.    
  38.     td3.appendChild(campo);
  39.    
  40.     var option4 = document.createElement("<option value=\"N/A\"></option>");
  41.     var option5 = document.createElement("<option value=\"Banamex\"></option>");
  42.     var option6 = document.createElement("<option value=\"Scotiabank\"></option>");
  43.        
  44.     var texto4 = document.createTextNode("- - - - - - ");
  45.     var texto5 = document.createTextNode("Banamex");
  46.     var texto6 = document.createTextNode("Scotiabank");
  47.    
  48.     option4.appendChild(texto4);
  49.     lista.appendChild(option4);
  50.  
  51.     option5.appendChild(texto5);
  52.     lista.appendChild(option5);
  53.  
  54.     option6.appendChild(texto6);
  55.     lista.appendChild(option6);
  56.    
  57.     td4.appendChild(lista);
  58.  
  59.     var que = document.getElementById('producto');
  60.     var nuevo = que.cloneNode(true);
  61.     td6.appendChild(nuevo);
  62.  
  63.  
  64.     var asesor = document.getElementById('asesor');
  65.     var nuevo_asesor = asesor.cloneNode(true);
  66.     td5.appendChild(nuevo_asesor);
  67.  
  68.     row.appendChild(td1);
  69.     row.appendChild(td6);
  70.     row.appendChild(td2);
  71.     row.appendChild(td3);
  72.     row.appendChild(td4);
  73.     row.appendChild(td5);
  74.    
  75.     tbody.appendChild(row);
  76.    
  77.     t++;

Etiquetas: campos, clonar
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 16:06.