Dessa maneira. Não há segredo nenhum em fazer isso, é algo muito simples via CSS. Basta colocar uma class na linha que você quer que tenha uma cor diferente e configurar o background no CSS. Bem, agora você deve estar se perguntando: Ok, se é tão fácil, então pra que eu preciso de um função javascript pra fazer isso? ' />
Função javascript para zebrar tabelas

Função javascript para zebrar tabelas

Em primeiro lugar, você deve estar se perguntando: O que diabos quer dizer ‘zebrar’ uma tabela? Eu explico: uma tabela ‘zebrada’ é aquela que tem linhas intercaladas com cores diferentes. Dessa maneira.
Não há segredo nenhum em fazer isso, é algo muito simples via CSS. Basta colocar uma class na linha que você quer que tenha uma cor diferente e configurar o background no CSS. Bem, agora você deve estar se perguntando: Ok, se é tão fácil, então pra que eu preciso de um função javascript pra fazer isso?

Tabela zebrada - Veja o exemplo

Vantagens em usar JS para zebrar uma tabela:

• Se a sua tabela for extensa, com muitas linhas, isso vai poupar bastante tempo.
• Se os dados vêm de uma base dinâmica, você não precisará alterar a maneira como sua tabela é montada.
• Maior liberdade para mover linhas acima e abaixo sem se preocupar em manter a ordem das classes.
• Se depois o código tiver que ser editado por alguém sem muita intimidade com HTML, você não corre o risco de ficar com a tabela desconfigurada.
• Se você mudar de idéia e quiser tirar o fundo de todas as linhas basta deletar a função, ao invés de ter que editar a tabela toda.

O código da função:

<script>
function zebra(id, classe) {
var tabela = document.getElementById(id);
var linhas = tabela.getElementsByTagName("tr");
for (var i = 0; i < linhas.length; i++) { 
((i%2) == 0) ? linhas[i].className = classe : void(0);
}
}
</script>

Basicamente, funciona da seguinte forma: a função aceita dois parâmetros, o id da tabela na qual será aplicada a ‘zebra’ e o nome da class que você definiu no seu css. Então um loop percorre toda a tabela, atribuindo a classe definida em todas as linhas ímpares.

O código CSS:

tr.zebra td {background:#eee;}

E para usá-la, basta incluir a seguinte linha após a tabela:

<script> zebra('minhatabela', 'zebra'); </script>

Veja o exemplo



Você gostou deste post?

  • Vitor Odenor Aquino da Silva

    Tentei utilizar seu código, que por sinal é bem interessante, no entanto ele não funciona no IE. Você tem alguma dica?

  • http://www.toprated.com.br Dom

    Olá Vitor!

    Ahh o IE6, sempre ele… fiz alguns testes aqui e descobri o problema. Algo bastante simples: dentro da função, a variável que contém o nome da classe que deve ser aplicada à linha zebrada chama-se ‘class’. Porém, no IE6, isso está causando conflito pois o browser usa esse nome de variável para outras informações e não ‘entende’ que seu escopo é restrito à função.

    Para resolver basta trocar o nome do parâmetro de ‘class’ para ‘classe’. Já atualizei o exemplo, pode pegar o código de lá se quiser.

    Havia testado no IE7 e como a função é tão simples não pensei que pudesse haver qualquer incompatibilidade com o famigerado IE6… :)
    Abraço e obrigado pelo toque!

  • http://Seuwebsite Marcello Morais

    Valeu Domênico, resolveu de forma simples o meu problema de tornar as tabelas imensas mais interessantes. São gestos assim que torna a internet cada vez melhor. Obrigado mesmo!

  • http://Seuwebsite leo

    muito bom….

  • http://broken-links.com/ Peter Gasston

    Muito mais facil:

    tr:nth-of-type(even) td { background-color: #eee; }

    Funciona em Firefox, Safari, Chrome, Opera, IE9. Precisa entao usar JavaScript so em IE6,7,8.

  • Ricardo Mello

    Legal Peter, mas como mais de 30% das pessoas ainda usa uma das versões do IE, prefiro usar JS de uma vez e deixar a utopia do CSS3 para 2012 (se o mundo não acabar)…

  • http://broken-links.com/ Peter Gasston

    Hmm… nao concordo com isso. Vc devia usar CSS3 em browsers que suporta, e JavaScript nos outros. Este parte de CSS3 esta pronta pra usar agora; nao deixe os browsers dinosauros atrapalha os modernos.

  • Fernando

    $(function(){
    i = 0;
    $(‘tr:even’).each(function(){
    $(this).css(‘background’, ‘#eee’);
    });
    });

    jQuery tah ae pra isso.. E funciona em todos os navegadores.. inclusive os IEs.

  • http://www.domeniconicola.com Domênico Citrângulo

    É verdade Fernando, jQuery também é uma boa solução, desde que você use-o para outras coisas além de apenas estilizar uma tabela. Afinal de contas, se a sua necessidade é apenas essa, não faz sentido importar um JS de 70kb para fazer o mesmo que um outro de 1kb faria, não é mesmo?

    Abraço!

  • Fernando

    Sem dúvida! Se for pra importar o fonte do jQuery que seja feito bom uso do mesmo!

    Abraço!

  • http://blog.yalp.com.br/10/14/tabela-zebrada-usando-javasrcipt/ Tabela zebrada usando JavaSrcipt | yalp

    [...] existe uma solução bem simples.Esse post foi criado oficialmente pelo meu amigo Domênico do Top Rated e resolvi compartilha-lo com [...]

  • http://Seuwebsite Rodrigo

    Gostaria de saber como faço para aplicar esse código um uma estrutura diferente. Estou desenvolvendo uma aplicação em asp.net e o meu controle renderiza varias div’s com listas ul dentro. Eu gostaria de fazer com que cada uma dessas div’s, ou cada uma dessas ul tivesse uma cor diferente, dando esse efeito de zebra tambem. Obrigado desde já.

  • Eu

    teste