Foros del Web » Programando para Internet » Javascript »

Problema con colspan

Estas en el tema de Problema con colspan en el foro de Javascript en Foros del Web. Hola creo tablas mediante el DOM de Javascript y por ejemplo defino una tabla de 4 colmnas y hay una de las filas que quiero ...
  #1 (permalink)  
Antiguo 23/08/2009, 13:11
 
Fecha de Ingreso: diciembre-2005
Mensajes: 92
Antigüedad: 18 años, 4 meses
Puntos: 0
Problema con colspan

Hola creo tablas mediante el DOM de Javascript y por ejemplo defino una tabla de 4 colmnas y hay una de las filas que quiero que solo sea 1 columna en lugar de 4. Yo eso en html lo hacia con colspan = 3 y se juntaban las 4 columnas en una.

Al hacer lo mismo en javascript, me las junta pero me pone los bordes de las 4 columnas a la derecha de la fila y queda esteticamente mal. Voy a intentar hacerlo graficamente:

/ columna / sin / el / colspan /
/ columna con el colspan=3 ////
/ columna / sin / el / colspan /

Como podeis ver en el cutre ejemplo que he hecho si que se me consigue la fila 2 en una pero no me junta las 4 columnas en una, sino que hace una con el tamaño de las 4 y las otras 3 las deja al final y esteticamente es muy feo.

Uso este codigo:
Código:
oTbody.rows[0].cells[0].appendChild(document.createTextNode("Modelos MC"));
		oTbody.rows[0].cells[0].setAttribute('id','cabeceraModelos');
		oTbody.rows[0].cells[0].colSpan =20;
Sabeis como conseguir esto?
  #2 (permalink)  
Antiguo 23/08/2009, 14:48
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Problema con colspan

Hola

Prueba con esto

Código javascript:
Ver original
  1. <html>
  2. <head>
  3. <title>Crear filas</title>
  4. <script type="text/javascript">
  5. var indiceFila = 0;
  6. function NuevaFila() {
  7. myNewRow = document.getElementById("tabla").insertRow(-1);
  8.  
  9.     if (indiceFila == 1) {
  10.         myNewCell=myNewRow.insertCell(-1);
  11.         myNewCell.colSpan="4";
  12.         var elemento = document.createElement("INPUT");
  13.         elemento.setAttribute("type","text");
  14.         elemento.setAttribute("size","8");
  15.         elemento.setAttribute("maxlength","15");
  16.         elemento.setAttribute("name","codigo_" + indiceFila);
  17.         elemento.setAttribute("id","codigo_" + indiceFila);
  18.         myNewCell.appendChild(elemento);
  19.  
  20.     }else {
  21.         myNewCell=myNewRow.insertCell(-1);
  22.         var elemento = document.createElement("INPUT");
  23.         elemento.setAttribute("type","text");
  24.         elemento.setAttribute("size","8");
  25.         elemento.setAttribute("maxlength","15");
  26.         elemento.setAttribute("name","codigo_" + indiceFila);
  27.         elemento.setAttribute("id","codigo_" + indiceFila);
  28.         myNewCell.appendChild(elemento);
  29.  
  30.         myNewCell=myNewRow.insertCell(-1);
  31.         var elemento2 = document.createElement("INPUT");
  32.         elemento2.setAttribute("type","text");
  33.         elemento2.setAttribute("size","25");
  34.         elemento2.setAttribute("maxlength","40");
  35.         elemento2.setAttribute("name","nombre_" + indiceFila);
  36.         elemento2.setAttribute("id","nombre_" + indiceFila);
  37.         myNewCell.appendChild(elemento2);
  38.  
  39.         myNewCell=myNewRow.insertCell(-1);
  40.         var elemento3 = document.createElement("INPUT");
  41.         elemento3.setAttribute("type","text");
  42.         elemento3.setAttribute("size","10");
  43.         elemento3.setAttribute("maxlength","20");
  44.         elemento3.setAttribute("name","unidad_" + indiceFila);
  45.         elemento3.setAttribute("id","unidad_" + indiceFila);
  46.         myNewCell.appendChild(elemento3);
  47.  
  48.         myNewCell=myNewRow.insertCell(-1);
  49.         var elemento4 = document.createElement("INPUT");
  50.         elemento4.setAttribute("type","text");
  51.         elemento4.setAttribute("size","10");
  52.         elemento4.setAttribute("maxlength","20");
  53.         elemento4.setAttribute("name","cantidad_" + indiceFila);
  54.         elemento4.setAttribute("id","cantidad_" + indiceFila);
  55.         myNewCell.appendChild(elemento4);
  56.     }
  57.  
  58. indiceFila++;
  59. }  
  60. </script>
  61. </head>
  62. <body>
  63. <a href="javascript:void(0);" onClick="NuevaFila()">Adicionar Fila</a>
  64. <br />
  65. <table border="1px" id="tabla">
  66. <tr>
  67. <td>CÓDIGO</td><td>NOMBRE</td><td>UNIDAD</td><td>CANTIDAD</td>
  68. </tr>
  69. </table>
  70. </body>

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 28/08/2009, 16:07
 
Fecha de Ingreso: diciembre-2005
Mensajes: 92
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: Problema con colspan

Adler gracias por la respuesta, aun no he podido intentar adaptar tu codigo al mio para probarlo, aunque no se si es eso lo que necesito.
Yo parto de una tabla que ya esta hecha y se trata de modificar una linea de esa tabla que ya esta formada con 4 columnas y que pase a tener solo uno

Yo creo que lo que me indicas es para añadir una fila y en mi caso ya tengo la fila creada.
  #4 (permalink)  
Antiguo 10/09/2009, 09:32
 
Fecha de Ingreso: mayo-2009
Mensajes: 61
Antigüedad: 14 años, 11 meses
Puntos: 3
Respuesta: Problema con colspan

De antemano gracias Adler me sirvio mucho gracias, pepepercebe prueva con esto a mi me sirvio
myNewCell=myNewRow.insertCell(-1);
myNewCell.colSpan="2";
myNewCell.innerHTML="<td ><div align='right'>Hola</div></td>";
myNewCell=myNewRow.insertCell(-1);
myNewCell.colSpan="6";
myNewCell.innerHTML="<td><label><textarea name='Hola' cols='100' rows='4' id='inmueble'></textarea></label></td>";

y asi haces una fila de 8 columnas
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:15.