free web hostingHosting24.com web hosting

Manipular Tablas HTML con DOM


Habitualmente y en las mayoría de los Sitios de Desarrollo Webs, nos encontramos con consejos de como armar o maquetar una Web con Capas, CSS, Javascript, etc., de tal forma de crear portales usables, accesibles y semánticas, y un !No utilizar tablas!. Pues bien, las tablas tienen su propósito y no es justamente para armar sitios, sino tabular datos. Ahora bien, si sos desarrollador o estas empezando con el mundillo de desarrollo Web, no deberías omitir aprender algo de ellas. En esta oportunidad intentaré explicar como optener información y manipular Tablas desde el DOM con ayuda de Javascript.
Pero ¿Que es DOM?.

En resumen, DOM (Document Object Model) es un conjunto de utilidades específicamente diseñadas para manipular documentos XML. Por extensión, DOM también se puede utilizar para manipular
documentos XHTML y HTML. Técnicamente, DOM es una API de funciones que se pueden utilizar para manipular las páginas XHTML de forma rápida y eficiente.

La intensión del post no es explicar en detalles el DOM, ya que llevaría todo un libro hacerlo, por lo que dejo en tus manos investgar más al respecto.

Algunos de los métodos o propiedades puntuales para manipular tablas son las siguientes:
rows: Devuelve un array con las filas de la Tabla
tBodies: Devuelve un array con todos los <tbody> de la tabla
insertRow(posicion): Inserta una nueva fila en la posición indicada dentro del array de filas de la tabla
deleteRow(posicion): Elimina la fila de la posición indicada.

Propiedades y métodos de <tr>:
cells: Devuelve un array con las columnas de la fila seleccionada
insertCell(posicion): Inserta una nueva columna en la posición indicada dentro del array de columnas
de la fila.

Pasemos a un ejemplo práctico:
Primero creamos una tabla sencilla en html.

<!--Diseño de la tabla-->
<!--*************-->
<table summary="Descripción de la tabla y su contenido" id="miTabla">
	<caption>Porcentaje de Frutas pos Pais</caption>
	<thead>
		<tr>
			<th scope="col"></th>
			<th scope="col">Manzanas</th>
			<th scope="col">Bananas</th>
		</tr>
	</thead>
	<tfoot>
		<tr>
			<th scope="col"></th>
			<th scope="col">Total: 160 </th>
			<th scope="col">Total: 175 </th>
		</tr>
	</tfoot>
	<tbody>
		<tr>
			<th scope="row">Argentina</th>
			<td>150</td>
			<td>160</td>
		</tr>
		<tr>
			<th scope="row">Brasil</th>
			<td>110</td>
			<td>115</td>
		</tr>
	</tbody>
</table>

A continuación, realizamos algunas manipulaciones a la Tabla con la ayuda de DOM, para lo cual incluimos unos botones para ejecutarlas con algo de Javascript:

<input type="button" onclick="ObtenerNumFilas()" name="btn_numfilas" value="Numero de Filas" />
<br>
<input type="button" onclick="ObtenerNumCuerpos()" name="btn_numCuerpos" value="Numero de Cuerpos" />
<br>
<input type="button" onclick="ObtenerNum1Cuerpos()" name="btn_numCuerpos" value="Numero de Filas del Cuerpo" />
<br>
<input type="button" onclick="BorrarPrimerFila()" name="btn_numCuerpos" value="Borrar la Primer Fila" />
<br>
<input type="button" onclick="ObtenerNumCol()" name="btn_numCuerpos" value="Obtener Numero de Columnas" />
<br>
<input type="button" onclick="ObtenerPrimerTexto()" name="btn_numCuerpos" value="Obtener Primer Texto" />
<br>
<input type="button" onclick="InsertarFila()" name="btn_numCuerpos" value="Insertar Filas" />

Ahora solo nos queda incluir algunas funciones útiles.

- Obtener el Número de filas de nuestra tabla

function ObtenerNumFilas(){
	//obtener el numero de filas
        var tabla = document.getElementById("miTabla");
	var numFilas = tabla.rows.length;
	alert("Número de Filas: "+ numFilas);
}

- Obtener el numero de cuerpos, los

function ObtenerNumCuerpos(){
        //obtener el numero de cuerpos
	var tabla = document.getElementById('miTabla');
	var numCuerpos = tabla.tBodies.length;
	alert("Número de Cuerpos: "+numCuerpos);
}

- Obtener la cantidad de filas que contiene el primer cuerpo

function ObtenerNum1Cuerpos(){
        //obtener el numero de filas del cuerpo
	var tabla = document.getElementById('miTabla');
	var numFilasCuerpo = tabla.tBodies[0].rows.length;
	alert("Número de Filas del Primer Cuerpo: "+numFilasCuerpo);
}

- Borrar la primer fila

function BorrarPrimerFila(){
        //borrar la primer fila
        //
	var tabla = document.getElementById('miTabla');
	tabla.deleteRow(0);
	tabla.tBodies[0].deleteRow(0);
}

- Obtener el número de columnas

function ObtenerNumCol(){
//obtener el numero de columnas
var tabla = document.getElementById('miTabla');
var numColumnas = tabla.rows[0].cells.length;
alert("Numero de Columnas: "+numColumnas);
}

- Obtener el texto de la Fila 1, Columna 1

Function ObtenerPrimerTexto(){
        //obtener el texto de la fila 1, columna 1
	var tabla = document.getElementById('miTabla');
	var texto = tabla.tBodies[0].rows[0].cells[0].innerHTML;
	alert("Texto de la Columna 1, Fila 1: "+texto);
}

- Insertar Fila

function InsertarFila(){
        //insertar nueva fila
	var tabla = document.getElementById('miTabla');
	// Insertar la tercera fila
	tabla.tBodies[0].insertRow(2);
	// Crear la columna de tipo <th> que hace de cabecera de fila
	var cabecera = document.createElement("th");
	cabecera.setAttribute('scope', 'row');
	cabecera.innerHTML = 'Paraguay'
	tabla.tBodies[0].rows[2].appendChild(cabecera);
	// Crear las dos columnas de datos y añadirlas a la nueva fila
	tabla.tBodies[0].rows[2].insertCell(1);
	tabla.tBodies[0].rows[2].cells[1].innerHTML = '210';
	tabla.tBodies[0].rows[2].insertCell(2);
	tabla.tBodies[0].rows[2].cells[2].innerHTML = '80';
}

De esta manera, también podríamos crear tablas enteras con DOM, pero claro, no es muy práctico. Es de suma utilidad si necesitamos crear o manipular tablas dinamicamente sin refrescar o actualizar una página. Y si podemos combinar con Ajax, podriamos crear una aplicaciones más complejas.
Como vemos, no es tan complicado manipular objetos HTML con DOM, este es un ejemplo práctico de como manejarnos con Tablas, pero podemos manipular todo tipo de objetos HTML, desde parrafos <p>, hasta las capas <div>.
Espero les sea de utilidad. Adjunto la Demo y Descarga del código. Ante cualquier consulta o sugerencia, no dudes en ponerlo en los comentarios.
Cordiales Saludos.

También te puede Interesar

¿Disfrutaste esta entrada? Por qué no dejas un comentario abajo y continúas la conversación, o te suscribes a mi feed y obtienes artículos como este enviados a tu lector de feeds.

Comentarios

[...] web, añadir nuevos elementos, o modificarlos. Ejemplo de como trabajar con tablas mediante DOM en este post. Función1: [...]

gracias :P personas como tu que comparten sus conocimientos se les agradece.

Gracias amigo, el de arriba tiene razon aquellas personas que comparten sus conocimientos se les agradece, muchas gracias amigo por tu ayuda. :D Saludos desde lima, mis mejores deseos. Bye

De nada Alberto y Jason es un placer poder ayudar y compartir conocimientos. Ante cualquier otra consulta no duden en volver. Cordiales Saludos.

[...] Javascript, y más aún si entendemos como trabajar con DOM y Javascript como lo demuestro en este otro post. Espero les sea de utilidad. Agendalo para tenerlo a mano, nunca se sabe cuando se los necesita. [...]

Mil gracias hermano!!!

Me salvaste la vida… Necesitaba saber como obtener un texto de la tabla para mi trabajo de investigación final…

Saludos desde Nicaragua…

Hola Roger, es un gusto ayudar y compartir conocimiento. gracias por visitarnos. Saludos. ;-)

Hola…oye…y por ejemplo si quiero buscar un dato dentro de la tabla….
desde diferentes campos de texto…
por ejemplo…tienes el campo de pais y otro de fruta
entonces inserto en ellos algo como Paraguay y Banana y que me despliegue pues la cantidad de bananas que hay en paraguay…
esto…lo he hecho en java….mas que no se como usarlo para este caso…

Hola Lizeth, me podrías explicar mejor a te refereis cuando decis campos Pais y Bananas. No entiendo bien si te referis a Cajas de texto (inputs) o combos (select). me confunde porque por un lado decis campo y por otro hablas de desplegar, que yo entiendo que es un combo. Saludos.

Deja un Comentario

(requerido)

(requerido)