Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/11/2015, 08:01
esnar1
Invitado
 
Mensajes: n/a
Puntos:
Creacion de tabla compleja javascript

Estoy intentado crear una tabla de ejercicios para gimnasio y para ello he creado un objeto tabla en el cual en su interior van los grupos y ejercicios. Es un poco lio por que es un array tridimensional. Tenemos.

function tabla1() {
this.nombre;
this.dias = [];
}

function dia() {
this.grupos = [];
}

function grupo() {
this.nombre;
this.ejercicios = [];
}

function ejercicio() {
this.nombre;
}


var tabla= new tabla1();



Supongamos que tenemos un tabla con 2 dias, 2 grupos y 2 ejercicios por grupo, puesto para que se entienda mejor, el 2 no es el indice sino la longitud:

tabla.dias[2].grupos[2].ejercicios[2].

quiero crear la siguiente tabla:


y tengo la siguiente funcion:


function crearTabla() {




var table = document.createElement("table");
table.setAttribute("class", "normal");
var thead = document.createElement("thead");
thead.innerHTML = "<tr><td colspan='2'></td><td>EJERCICIO</td><td>IMAGEN</td><td>SERIES</td><td>REPETICIONES</td><td>NOTAS</td>";
table.appendChild(thead);
var tbody = document.createElement("tbody");

for (var i = 0; i < tabla.dias.length; i++) {
var ejerciciosDia = 0;
for (var h = 0; h < tabla.dias[i].grupos.length; h++) {
//numero ejercicios en un grupo: tabla.dias[i].grupos[j].ejercicios.length;
ejerciciosDia += tabla.dias[i].grupos[h].ejercicios.length;
}

//aqui numero de ejercicios en un dia en la variable dia.
var trDia = document.createElement("tr");
var tdDia = document.createElement("td");
tdDia.setAttribute("rowspan", ejerciciosDia*2);
tdDia.innerHTML = "DIA " + (i + 1);
trDia.appendChild(tdDia);

for (var j = 0; j < tabla.dias[i].grupos.length; j++) {
var ejerciciosGrupo=tabla.dias[i].grupos[j].ejercicios.length;
var tdGrupo = document.createElement("td");
tdGrupo.setAttribute("rowspan", ejerciciosGrupo*2);
tdGrupo.innerHTML = tabla.dias[i].grupos[j].nombre;
trDia.appendChild(tdGrupo);

for (var k = 0; k < tabla.dias[i].grupos[j].ejercicios.length; k++) {
var tdTitulo = document.createElement("td");
var tdImagen = document.createElement("td");
var tdSeries = document.createElement("td");
var tdRepeticiones = document.createElement("td");
var tdNotas = document.createElement("td");

tdTitulo.innerHTML = tabla.dias[i].grupos[j].ejercicios[k].nombre;
tdImagen.setAttribute("rowspan", "2");
tdSeries.setAttribute("rowspan", "2");
tdRepeticiones.setAttribute("rowspan", "2");
tdNotas.setAttribute("rowspan", "2");

trDia.appendChild(tdTitulo);
trDia.appendChild(tdImagen);
trDia.appendChild(tdSeries);
trDia.appendChild(tdRepeticiones);
trDia.appendChild(tdNotas);

tbody.appendChild(trDia);

for (var l = k; l < k+1; l++) {
var trVacio = document.createElement("tr");
var tdVacio = document.createElement("td");
trVacio.appendChild(tdVacio);
tbody.appendChild(trVacio);
table.appendChild(tbody);
divTabla.appendChild(table);
}
}
}

}



No entiendo por que me sale esto...:


Por mas que veo el codigo creo que esta mas o menos bien, o al menos que deberia salir como quiero, pero nada, por mas que pruebo cosas y cambio otras me sigue saliendo igual...

Que opinais? Gracias compañeros


CODIGO EN PASTEBIN DE JAVASCRIPT DE LA CREACION DE TABLA: [URL="http://pastebin.com/MdM2PTXE"]http://pastebin.com/MdM2PTXE[/URL]
CODIGO EN PASTEBIN DE HTML DE LAS TABLAS: [URL="http://pastebin.com/8ee5TPvj"]http://pastebin.com/8ee5TPvj[/URL]

Última edición por esnar1; 15/11/2015 a las 08:49