Continuaremos construyendo nuestra tabla de estadísticas en el equipo de Colombia, pero lo haremos de manera más eficiente con javascript mediante el uso de matrices y bucles.
HTML
<table> <thead> <tr> <th>Name</th> <th>Surname</th> <th>Nationality</th> <th class="age">Age</th> <th>Position</th> </tr> </thead> <tbody> </tbody> </table>
CSS
td, th { border-width: 1px; border-style: solid; } td { padding-left: 10px; padding-right: 10px; padding-top: 10px; padding-bottom: 10px; } table { border-collapse: collapse; } #carlos { font-style: italic; } .age { background-color: yellow; } #carlos .age { font-weight: 900; } td.age { font-size: 150%; }
ospinaRemirez = ['David', 'Ospina Ramirez', 'Colombia', 33, 'Portero'];
,
y termina con ]
.statsRow = "<td>" + ospinaRamirez [0] + "</td>";
"
símbolos. statsRow = statsRow + "<td>" + ospinaRamirez [1] + "</td>";
statsRow
(cadena nueva) = statsRow
(cadena antigua) + elementos adicionales. statsRow + = "<td>" + ospinaRamirez [2] + "</td>"; statsRow + = "<td>" + ospinaRamirez [3] + "</td>"; statsRow + = "<td>" + ospinaRamirez [4] + "</td>";
+=
elementos adicionales de cadena nueva , pero significa lo mismo. Podríamos haber escrito la tercera línea de la misma manera, pero es bueno ver las diferentes opciones para que puedas elegir la que más te guste. // agregar fila a la tabla
//
que significa que es un comentario. Nos dice qué hace la siguiente parte del programa, pero su computadora no lee esta información. Ahora sabemos que la siguiente sección de código está destinada a agregar la fila a nuestra tabla. tableBody = document.getElementsByTagName ("tbody") [0];
<tbody>
en el documento (que es nuestra página). <tbody>
en la página), por getElementsByTagName[0]
lo que devuelve una lista y necesitamos identificar qué elemento de la lista queremos. En este caso, es el primero que usamos) .newRow = tableBody.insertRow (0);
<tbody>
) de nuestro elemento tableBody.newRow
newRow.innerHTML = statsRow;
newRow
..innerHTML
se refiere al código HTML dentro del elemento antes de ., por lo que ahora estamos hablando del código dentro de nuestra nueva fila.statsRow
cuál es la cadena que contiene todas las celdas de datos. <tbody>
.ospinaRamirez = ['David', 'Ospina Ramirez', 'Colombia', 33, 'Portero']; statsRow = "<td>" + ospinaRamirez [0] + "</td>"; statsRow + = "<td>" + ospinaRamirez [1] + "</td>"; statsRow + = "<td>" + ospinaRamirez [2] + "</td>"; statsRow + = "<td>" + ospinaRamirez [3] + "</td>"; statsRow + = "<td>" + ospinaRamirez [4] + "</td>"; // agregar fila a la tabla tableBody = document.getElementsByTagName ("tbody") [0]; newRow = tableBody.insertRow (0); newRow.innerHTML = statsRow;
jugadores = [ ['David', 'Ospina Ramirez', 'Colombia', 33, 'Portero'], ['Carlos', 'Eccehomo Cuesta Figueroa', 'Colombia', 22, 'Defensa'], ['Juan Guillermo', 'Cuadrado Bello', 'Colombia', 33, 'Centrocampista'], ['Radamel Falcao', 'García Zárate', 'Colombia', 35, 'Delantero'] ];
,
. players
.players[0]
, players[1]
, players[2]
y players[3]
. En lugar de escribir cada uno de estos a su vez, podemos usar un bucle javascript de la siguiente manera.// recorrer todos los jugadores for (p = 0; p < players.length; p++) { }
{
.for
ciclo, usando pcomo nuestro iterador.()
podemos ver tres elementos de código separados por ;
. p = 0
le dice a la computadora por dónde empezar, asignando un valor de 0 a la variable p.p < players.length
sea verdad. Recuerde que el elemento después de .
pertenece al elemento antes de players.length
, por lo que aquí está la longitud de la matriz llamada reproductores, que es 4. Por lo tanto, el ciclo debe ejecutarse mientras p < 4, es decir, 0, 1, 2 y 3.players[0]
es el mismo que ospinaRamirez. // crear cadena de estadísticas statsRow = "<td>" + jugadores [p] [0] + "</td>"; statsRow + = "<td>" + jugadores [p] [1] + "</td>"; statsRow + = "<td>" + jugadores [p] [2] + "</td>"; statsRow + = "<td>" + jugadores [p] [3] + "</td>"; statsRow + = "<td>" + jugadores [p] [4] + "</td>";
{}
tableBody = document.getElementsByTagName ("tbody") [0]; newRow = tableBody.insertRow(p); newRow.innerHTML = statsRow;
0
después insertRow
a p
. Si lo dejamos como 0
, agregaremos la nueva línea en la parte superior cada vez. Al ponerlo como índice del jugador en la lista, la lista en pantalla será la misma que la lista en nuestra matriz. tableBody
nunca cambia, por lo que no es necesario reasignarlo cada vez que recorremos el ciclo. Muevamos esa línea por encima del ciclo para que se calcule primero y nunca más. jugadores = [ ['David', 'Ospina Ramirez', 'Colombia', 33, 'Portero'], ['Carlos', 'Eccehomo Cuesta Figueroa', 'Colombia', 22, 'Defensa'], ['Juan Guillermo', 'Cuadrado Bello', 'Colombia', 33, 'Centrocampista'], ['Radamel Falcao', 'García Zárate', 'Colombia', 35, 'Delantero'] ]; tableBody = document.getElementsByTagName ("tbody") [0]; // recorrer todos los jugadores para (p = 0; p <jugadores.longitud; p ++) { // crear cadena de estadísticas statsRow = "<td>" + jugadores [p] [0] + "</td>"; statsRow + = "<td>" + jugadores [p] [1] + "</td>"; statsRow + = "<td>" + jugadores [p] [2] + "</td>"; statsRow + = "<td>" + jugadores [p] [3] + "</td>"; statsRow + = "<td>" + jugadores [p] [4] + "</td>"; // agregar fila a la tabla newRow = tableBody.insertRow (p); newRow.innerHTML = statsRow; }