Foros del Web » Programando para Internet » Javascript »

campos, filas y columnas dinamicamente

Estas en el tema de campos, filas y columnas dinamicamente en el foro de Javascript en Foros del Web. Buenas tardes, tengo una tabla creada en html, con 13 columnas y sin filas. las filas se insertan según el usuario lo indique, hasta hay ...
  #1 (permalink)  
Antiguo 17/01/2013, 15:57
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 13 años, 4 meses
Puntos: 4
campos, filas y columnas dinamicamente

Buenas tardes,

tengo una tabla creada en html, con 13 columnas y sin filas. las filas se insertan según el usuario lo indique, hasta hay todo bien ahora necesito que se me creen columnas dinamicamente en la misma tabla según como lo indique el usuario, la idea es que un botón me agregue la columna y luego otro boton me agrege la fila en ese orden pero no se como hacerlo yo tengo esto.

Código PHP:
Ver original
  1. <body>
  2.  
  3. <center><input name="Agregar" type="button" value="Filas" onClick="agregarUsuario()"></center>
  4.  
  5.  
  6. <table width="101%" height="38" border="1" id="tabla" name="tabla">
  7.   <tr>
  8.     <th scope="col"><h5>No.ANALISIS</h5></th>
  9.     <th scope="col"><h5>PRODUCTO </h5></th>
  10.     <th scope="col"><h5>LOTE </h5></th>
  11.     <th scope="col"><h5>PRESENTACION</h5></th>
  12.     <th scope="col"><h5>CLIENTE </h5></th>
  13.     <th scope="col"><h5>CANTIDAD MUESTREADA</h5></th>
  14.     <th scope="col"><h5><p>FORMA FARMACEUTICA</p></h5></th>
  15.     <th scope="col"><h5>FECHA RECEPCION</h5></th>
  16.     <th scope="col"><h5>FECHA ANALISIS</h5></th>
  17.     <th scope="col"><h5>FECHA RESULTADOS</h5></th>
  18.     <th scope="col"><h5>TECNICA</h5></th>
  19.     <th scope="col"><h5>METODO</h5></th>
  20.     <th scope="col"><h5>FORMATO</h5></th>
  21.   </tr>
  22. </table>
  23.  
  24.  
  25. </body>

este es el javascript que me crea las filas

Código Javascript:
Ver original
  1. <script language="javascript" type="text/javascript">
  2.  
  3.     var posicionCampo=1;
  4.  
  5.     function agregarUsuario(){
  6.  
  7.     nuevaFila = document.getElementById("tabla").insertRow(-1);
  8.  
  9.     nuevaFila.id=posicionCampo;
  10.    
  11.  
  12.     nuevaCelda=nuevaFila.insertCell(-1);
  13.     nuevaCelda.innerHTML="<td><input type='text' size='20' id='campo1"+posicionCampo+"' name='campo1["+posicionCampo+"]' value=''/></td>";
  14.  
  15.     nuevaCelda=nuevaFila.insertCell(-1);
  16.     nuevaCelda.innerHTML="<td><input type='text' size='20' id='campo2"+posicionCampo+"' name='campo2["+posicionCampo+"]' value=''/></td>";
  17.  
  18.     nuevaCelda=nuevaFila.insertCell(-1);
  19.     nuevaCelda.innerHTML="<td><input type='text' size='20' id='campo3"+posicionCampo+"' name='campo3["+posicionCampo+"]' values=''/></td> ";
  20.    
  21.     nuevaCelda=nuevaFila.insertCell(-1);
  22.     nuevaCelda.innerHTML="<td><input type='text' size='20' id='campo4"+posicionCampo+"' name='campo4["+posicionCampo+"]' values=''></td>";     
  23.    
  24.     nuevaCelda=nuevaFila.insertCell(-1);
  25.     nuevaCelda.innerHTML="<td><input type='text' size='20' id='campo5"+posicionCampo+"' name='campo5["+posicionCampo+"]' value=''/></td>";
  26.    
  27.     nuevaCelda=nuevaFila.insertCell(-1);
  28.     nuevaCelda.innerHTML="<td><input type='text' size='20' id='campo6"+posicionCampo+"' name='campo6["+posicionCampo+"]' value=''/></td>";
  29.    
  30.     nuevaCelda=nuevaFila.insertCell(-1);
  31.     nuevaCelda.innerHTML="<td><input type='text' size='20' id='campo7"+posicionCampo+"' name='campo7["+posicionCampo+"]' value=''/></td>";
  32.    
  33.     nuevaCelda=nuevaFila.insertCell(-1);
  34.     nuevaCelda.innerHTML="<td><input type='text' size='20' id='campo8"+posicionCampo+"' name='campo8["+posicionCampo+"]' value=''/></td>";
  35.    
  36.     nuevaCelda=nuevaFila.insertCell(-1);
  37.     nuevaCelda.innerHTML="<td><input type='text' size='20' id='campo9"+posicionCampo+"' name='campo9["+posicionCampo+"]' value=''/></td>";
  38.    
  39.     nuevaCelda=nuevaFila.insertCell(-1);
  40.     nuevaCelda.innerHTML="<td><input type='text' size='20' id='campo10"+posicionCampo+"' name='campo10["+posicionCampo+"]' value=''/></td>";
  41.    
  42.     nuevaCelda=nuevaFila.insertCell(-1);
  43.     nuevaCelda.innerHTML="<td><input type='text' size='20' id='campo11"+posicionCampo+"' name='campo11["+posicionCampo+"]' value=''/></td>";
  44.    
  45.     nuevaCelda=nuevaFila.insertCell(-1);
  46.     nuevaCelda.innerHTML="<td><input type='text' size='20' id='campo12"+posicionCampo+"' name='campo12["+posicionCampo+"]' value=''/></td>";
  47.    
  48.     nuevaCelda=nuevaFila.insertCell(-1);
  49.     nuevaCelda.innerHTML="<td><input type='text' size='20' id='campo13"+posicionCampo+"' name='campo13["+posicionCampo+"]' value=''/></td>";
  50.  
  51.     nuevaCelda=nuevaFila.insertCell(-1);
  52.     nuevaCelda.innerHTML="<td><input type='button' value='X' onclick='eliminarUsuario(this)'></td>";
  53.    
  54.     posicionCampo++;
  55.  
  56.     }
  57.  
  58.     function eliminarUsuario(obj){
  59.  
  60.     var oTr = obj;
  61.  
  62.     while(oTr.nodeName.toLowerCase()!='tr'){
  63.  
  64.     oTr=oTr.parentNode;
  65.  
  66.     }
  67.  
  68.     var root = oTr.parentNode;
  69.  
  70.     root.removeChild(oTr);
  71.  
  72.     }
  73.  
  74.  
  75. </script>

como se dan cuenta hay para que se me inserten 13 celdas, que son las celdas o columnas fijas, pero necesito insertar mas de 13, pero no se como.

Agradezco toda la ayuda que me puedan brindar.
  #2 (permalink)  
Antiguo 17/01/2013, 19:53
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: campos, filas y columnas dinamicamente

Lee este tutorial
http://www.redips.net/javascript/add...s-and-columns/

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 18/01/2013, 09:53
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 13 años, 4 meses
Puntos: 4
Respuesta: campos, filas y columnas dinamicamente

Hola gracias si me sirvio ese tutorial pero tengo una pequeña inquietud no se si tu me la puedas aclarar, necesito insertar campos de texto dentro de cada celda que se crea.

Código Javascript:
Ver original
  1. <script language="javascript" type="text/javascript">
  2.  
  3. //Anexar fila a la tabla HTML
  4. function appendRow() {
  5.     var tbl = document.getElementById('tabla'), //tabla de referencia
  6.         row = tbl.insertRow(tbl.rows.length),   //fila de la tabla de datos anexados  
  7.         i;
  8.     //Insertar celdas de la tabla a la nueva fila
  9.     for (i = 0; i < tbl.rows[0].cells.length; i++) {
  10.         createCell(row.insertCell(i), i, 'row');
  11.     }
  12. }
  13. //Crear el elemento DIV y añadir a la celda de la tabla
  14. function createCell(cell, text, style) {
  15.     var div = document.createElement('div'), // crear el elemento DIV
  16.         txt = document.createTextNode('sssss');   // crear un nodo de texto
  17.     div.appendChild(txt);                    // anexar nodo de texto para el DIV
  18.     div.setAttribute('class', style);        // conjunto de atributos de clase DIV
  19.     div.setAttribute('className', style);    // conjunto de atributos de clase para IE (?)
  20.     cell.appendChild(div);                   // DIV añadir a la celda de la tabla
  21. }
  22.  
  23. // Anexar columna a la tabla HTML
  24. function appendColumn() {
  25.     var tbl = document.getElementById('tabla'), // tabla de referencia
  26.         i;
  27.     // Bucle abierto para cada fila y cada celda
  28.     for (i = 0; i < tbl.rows.length; i++) {
  29.         createCell(tbl.rows[i].insertCell(tbl.rows[i].cells.length), i, 'col');
  30.     }
  31. }
  32.  
  33. //Eliminar filas de la tabla con un índice mayor que 0
  34. function deleteRows() {
  35.     var tbl = document.getElementById('tabla'), // tabla de referencia
  36.         lastRow = tbl.rows.length - 1,          // establecer el índice de la última fila
  37.         i;
  38.     // Eliminar filas con un índice mayor que 0
  39.     for (i = lastRow; i > 1; i--) {
  40.         tbl.deleteRow(i);
  41.     }
  42. }
  43.  
  44. // Eliminar columnas de la tabla con un índice mayor que 0
  45. function deleteColumns() {
  46.     var tbl = document.getElementById('tabla'), // tabla de referencia
  47.         lastCol = tbl.rows[1].cells.length - 1, // establecer el índice de la última columna
  48.         i, j;
  49.     // Eliminar celdas con un índice mayor que 0 (para cada fila)
  50.     for (i = 1; i < tbl.rows.length; i++) {
  51.         for (j = lastCol; j > 1; j--) {
  52.             tbl.rows[i].deleteCell(j);
  53.         }
  54.     }
  55. }
  56.  
  57. </script>

Agradezco la ayuda
  #4 (permalink)  
Antiguo 18/01/2013, 13:57
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: campos, filas y columnas dinamicamente

Te pongo esta variante que se entiende mejor
Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="es-ar">
  3. <meta charset="utf-8" />
  4. <title>Tabla dinámica</title>
  5. <script type="text/javascript">
  6. //<![CDATA[
  7. function crea_tabla(){
  8.        var n=5;//filas
  9.        var n2=4;//columnas
  10.        var i=0;
  11.    var tblBody = document.getElementById("MiTabla").getElementsByTagName("tbody")[0]; // identifico el elemento donde hacer el appendChild de las filas
  12.    for (var f=0;f<n;f++) {
  13.        var fila = document.createElement("tr"); // creo una fila
  14.        for (var c=0;c<n2;c++) {
  15.            var celda = document.createElement("td"); // creo una celda
  16.                         i++; // usamos i para crear id's únicos para los input si los requiere
  17.                         var crearInput;
  18.                         crearInput = document.createElement('input'); //creo un input
  19.                         crearInput.type ="text"; // generando atributos del input
  20.                         crearInput.name ="campo";  // generando atributos del input
  21.                         crearInput.id ="campo_"+i;  // generando atributos del input
  22.            celda.appendChild(crearInput); // meto dentro de la celda el input
  23.            fila.appendChild(celda); // meto la celda(que ya tiene el input dentro) dentro de la fila
  24.        }
  25.        tblBody.appendChild(fila); // agrego las filas al tbody
  26.    }  
  27. }
  28. //]]>
  29. </head>
  30. <body   onload="crea_tabla()">
  31. <table id="MiTabla">
  32.  <tbody></tbody>
  33.  </table>
  34. </body>
  35. </html>

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 19/01/2013, 07:48
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 13 años, 4 meses
Puntos: 4
Respuesta: campos, filas y columnas dinamicamente

Gracias me sirvio mucho, ya crea las filas y las columnas con campos de texto, segun lo necesite, ahora necesito que en las celdas de las columnas aparescan listas desplegables, solo en las celdas de las columnas, ademas que solo me se elimine la ultima fila y o columna insertada no todas las que ya hay.

Gracias ;)
  #6 (permalink)  
Antiguo 21/01/2013, 13:44
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 13 años, 4 meses
Puntos: 4
Respuesta: campos, filas y columnas dinamicamente

No se si sepas como toamar el valor de esos campos para insertarlos en una base de datos, como se cuales son sus nombres, creo que es campo, pero como lo llamo!! Gracias por toda la ayuda que me puedan brindar
  #7 (permalink)  
Antiguo 21/01/2013, 17:11
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: campos, filas y columnas dinamicamente

Cita:
Iniciado por JeMaGa Ver Mensaje
No se si sepas como toamar el valor de esos campos para insertarlos en una base de datos, como se cuales son sus nombres, creo que es campo, pero como lo llamo!! Gracias por toda la ayuda que me puedan brindar
Si,es el name, en el ejemplo es siempre el mismo, pero podés hacer igual que con los id para diferenciarlos.
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Etiquetas: campos, columnas, dinamicamente, filas, html, input
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 21:53.