Foros del Web » Programando para Internet » Javascript »

createElement desde una celda de una tabla

Estas en el tema de createElement desde una celda de una tabla en el foro de Javascript en Foros del Web. Tengo el siguiente código: Código HTML: <table> ... <tr> <td> ¿ Cuántas sesiones forman el evento ? </td> <td> <form> <input name= "nsesiones" type= "text" ...
  #1 (permalink)  
Antiguo 23/02/2006, 05:45
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años
Puntos: 1
Pregunta createElement desde una celda de una tabla

Tengo el siguiente código:

Código HTML:
<table>...
<tr><td>¿ Cuántas sesiones forman el evento ?</td><td><form><input name="nsesiones" type="text" onBlur="devuelveNSesiones(this)"></form></td></tr>";
Eso llama a una función javascript, q es la siguiente:

Código:
function devuelveNSesiones(objeto) {
	var nInput;
	obj = objeto.form;
	for (nInput=1; nInput<=objeto.value; nInput++) {
		eltoTR1 = document.createElement("tr");
		eltoTD11 = document.createElement("td");
		elto1 = document.createTextNode("*Fecha: ");
		eltoTD13 = document.createElement("td");
		elto2 = document.createElement("input");
		elto2.name = "inputff" + nInput;
		elto2.id = "inputff" + nInput;
		elto2.type = "text";
		obj.appendChild(eltoTR1);
		eltoTR1.appendChild(eltoTD11);
		obj.appendChild(elto1);
		eltoTR1.appendChild(eltoTD13)
	}
}

Esta función crea varios elementos, pero todos en la misma celda desde la q llamo a la función. Lo q quisiera es q se crearan en filas distintas, pero no sé cómo puedo hacerlo...
Si no he explicado bien el problema, decidme e intento volver a explicarlo de otra manera. Gracias.

Última edición por AnDrEa MM; 06/03/2006 a las 03:32
  #2 (permalink)  
Antiguo 24/02/2006, 08:44
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años
Puntos: 1
¿A nadie se le ocurre alguna idea... ?
  #3 (permalink)  
Antiguo 24/02/2006, 10:27
Avatar de Callaghan  
Fecha de Ingreso: enero-2006
Mensajes: 58
Antigüedad: 18 años, 3 meses
Puntos: 1
Hola con insertCell(i) insertas celdas.
Por ejemplo en tu caso
eltoTR1.insertCell(0) --> te crea una celda en la primera columna
eltoTR1.insertCell(1) --> te crea una celda en la segunda columna
.
.
.
  #4 (permalink)  
Antiguo 24/02/2006, 11:38
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años
Puntos: 1
Ok, muchas gracias Callaghan. Voy a ver si sé aplicarlo a mi ejemplo!!
  #5 (permalink)  
Antiguo 06/03/2006, 03:52
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años
Puntos: 1
Llevo días con este tema y no consigo sacar nada en positivo... Voy a intentar dejar un ejemplo "gráfico" del problema:

|---------------------|-------|
| <input type=text...> | botón |
|---------------------|-------|

Vale, esa es mi tabla. Lo q quiero hacer es q al pulsar el botón "botón", se me cree una nueva fila en la tabla, y en ella meter cierto contenido. La función Javascript es llamada cuando se pulsa sobre el botón, y lo q hace la función es crear una nueva etiqueta <tr>, y a partir de ahí el contenido q me interesa. El problema es q, como cuando se pulsa al botón, la etiqueta </tr> de la primera fila no está escrita todavía, se me crea el nuevo contenido como celdas de la fila existente, es decir, no me crea nuevas filas a pesar de crear una nueva etiqueta <tr> por no haber cerrado la primera etiqueta </tr>. Bueno, creo q ahora está mejor explicado. Si a alguien se le ocurre alguna idea agradecería cualquier tipo de ayuda, ya q no sé cómo puedo solucionarlo. Como última solución sacaría el botón de la tabla... tal vez así pudiera hacerse... Pero en principio no quiero hacerlo. Gracias!
  #6 (permalink)  
Antiguo 06/03/2006, 05:05
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola AnDrEa MM:

Estás intentando hacer algo que es bastante complejo... además no hay tanta información, aunque en base a "lo supuesto" trataré de orientarte...

El único objeto que tienes de referencia es el formulario, cuando deberías tener la referencia de la tabla... y la etiqueta form está dentro de una celda, así que dentro de esa misma celda deberías cerrar el formulario

Tal vez te interese más iniciar el formulario antes de declarar la tabla:
<form> ... <table>

De esta manera el anidamiento de las etiquetas lo podrías corregir.
... además, como tienes posibilidad de referenciar la etiqueta form (de hecho, parece ser que es lo que estás haciendo)... puedes así referenciar la tabla sin problemas...

Dime si te vale para poder seguir (si lo necesitases...)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 06/03/2006, 05:17
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años
Puntos: 1
Ok, he sacado la etiqueta <form> fuera de las etiquetas <table></table>, pero sin realizar ningún cambio más, y me crea el nuevo contenido fuera de la tabla. Tal vez eso se solucione referenciando a la tabla como has dicho, pero no sé muy bien qué implica eso ni cómo se debe hacer... Podría ser añadiendo los elementos de esta manera...

var objeto = document.nombre_de_mi_formulario.nombre_de_mi_tabl a;
objeto.appendChild(elemento);

Puede q sea algo así? Cogí el código inicial de la web y lo he ido acomodando a lo q necesito, pero no sé usarlo demasiado bien...
  #8 (permalink)  
Antiguo 06/03/2006, 05:36
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

Pues no exactamente...

Si tienes algo así:

obj = objeto.form;
...
La tabla interior la obtendrías así:

laTabla = obj.getElementsByTagName("table")[0];

...luego tendrías que referenciar al tbody, que aunque no lo tengas definido es algo que existe siempre... y recién con el tbody puedes hacer algo así:
elTBody.appendChild(nuevoTR)...

Como te decía es algo complejo, pero si sigues estos pasos lo puedes hacer (a no ser que me hubiera confundido)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #9 (permalink)  
Antiguo 06/03/2006, 06:13
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años
Puntos: 1
Uffff, no termino de entenderlo. He estado buscando info sobre la etiqueta <tbody>, veo q es para dar formato al cuerpo de una tabla... Pero no entiendo porqué debo hacerle referencia para lo q quiero hacer y no sé cómo hacerlo... Ais! Supongo q debo indicarle q la fila q quiero crear está en el tbody de la tabla indicada, o algo así... Ya q sino no indico q la fila va asociada a la tabla...
Muchas gracias por la ayuda caricatos!!
  #10 (permalink)  
Antiguo 06/03/2006, 06:35
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

Seguramente se pueda simplificar buscando solo el primer elemento tbody...

laTabla = obj.getElementsByTagName("tbody")[0];

Sobre información del tag tbody, es cierto que no hay mucha, pero es un tag que se crea siempre.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #11 (permalink)  
Antiguo 06/03/2006, 06:37
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años
Puntos: 1
Ok, voy a tomarme un descanso! Esta tarde continúo con el tema, a ver si lo consigo! Aunq me temo q volveras a saber de mí por aquí... jeje. Gracias!!
  #12 (permalink)  
Antiguo 06/03/2006, 11:19
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años
Puntos: 1
Por fin!! Ha salido!! Muchas gracias caricatos, me has sido de gran ayuda, no sabía q había q tenía q usar esos comandos para poder conseguir lo q buscaba.

Esto va por tí
  #13 (permalink)  
Antiguo 21/09/2010, 11:13
 
Fecha de Ingreso: noviembre-2005
Mensajes: 5
Antigüedad: 18 años, 6 meses
Puntos: 0
De acuerdo Respuesta: createElement desde una celda de una tabla

Hola!!!
Podrias poner el codigo completo para ver como quedo?
Muchas Gracias de Antemano.
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 19:30.