Tabelas dinâmicas

Criar tabelas dinamicamente com o Document Object Model, adicionando e removendo linhas e células, é extremamente fácil. Basicamente envolve a intercalação das funções createElement e appendChild.

Este artigo não seria possível sem a incrível documentação do Mozilla, especialmente “Traversing an HTML Table with JavaScript and DOM Interfaces“.

Abaixo segue um script para criar uma tabela com três linhas e três colunas por linha.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function desenharTabela()
{
    var tabela = document.createElement('table');
 
    for (var i = 0; i < 3; i++) {
        var linha = document.createElement('tr');
 
        for (var j = 0; j < 3; j++) {
            var celula = document.createElement('td');
            var texto = document.createTextNode("Coluna " + j + ", Linha " + i);
 
            celula.appendChild(texto);
 
            linha.appendChild(celula);
        }
 
        tabela.appendChild(linha);
    }
 
    return tabela;
}

O ordem do appendChild() parece reversa. Mas pense da seguinte maneira, após ter seu elemento criado, “conecte” ele como filho de outro.

O HTML está no atributo innerHTML da variável tabela.

1
2
tabela = desenharTabela();
window.write(tabela.innerHTML);