Tabela paginada e com diferenciação de cor nas linhas
Publicado por sombriks 22/08/2006
[ Hits: 6.457 ]
Homepage: http://www.google.com/profiles/Sombriks
Este trecho de código serve mais como exemplo pra alguém que precise paginar reultados de um banco de dados. Note que ele foi testado no Firefox, Konqueror, Opera e até mesmo no Internet Explorer, de modo que, de 0 a 10, eu daria 9,5. Espero que seja útil a alguém.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/> <title>Resultados de ALFABETO</title> <style> h3{ color:rgb(255,200,200); } h2{ color:rgb(200,200,200);/* Ver estas três cores pra colorir as linhas da tabela.*/ } h1{ color:rgb(200,200,255); } fieldset{ width: 50%; height: 50%; } table{ border-left: groove ; border-right: groove ; background-color:rgb(200,234,255); width: 100%; height: 100%; } tr{ color: rgb(120,130,140); } td{ } a{ color: rgb(0,250,20); text-decoration: none; } a:hover{ border-style: dashed ; color: rgb(250,20,0); text-decoration: none; } #data01{ } #data1Header{ border-top: groove ; } #data1Footer{ border-bottom: groove ; } .linhaPar{ } .linhaImpar{ } #line01{ background-color: rgb(190,180,170); } #line02{ background-color: rgb(170,180,190); } #line03{ background-color: rgb(190,180,170); } #line04{ background-color: rgb(170,180,190); } #line05{ background-color: rgb(190,180,170); } #line06{ background-color: rgb(170,180,190); } #line07{ background-color: rgb(190,180,170); } </style> <!-- link type="text/css" rel="stylesheet" href="testess.css"/ --> <script type="text/javascript"> <!-- //valores das células da tabela; var dataGrid = [] //Linhas visíveis; var viewPort = 5; //Primeiro da lista exibida, e não o primeiro da grade. var first = 2; //Último da lista exibida. var last = first+viewPort; //Chamado quando o corpo da página carrega function init(){ /* Ao que parece, o processo de se capturar a tabela é a) rápido demais e por isso uma linha ainda nao existe a essa altura b) muito lento de forma que o código continua a ser executado mesmo antes dessa função terminar. por isso um try/catch se faz necessário aqui. */ try{ tabela=document.getElementById('data1'); for(var i=0;i<=tabela.rows.length;i++){ dataGrid[i]=[];//Inicializando uma linha na grade javascript var linha=tabela.rows[i].cells; for(var j=0;j<linha.length;j++){ var dataLine=dataGrid[i]; dataLine[j]=linha[j].innerHTML;//Isto não funcionou com inerText! dataGrid[i]=dataLine; } } } catch(err){ startViewPort(); } startViewPort(); } //Sempre é chamado para limpar a tabela. function clearTable(){ tabela=document.getElementById('data1'); var i=0; while(i<tabela.rows.length){ tabela.deleteRow(i) } } /*Esse faz todo o trabalho; pega os campos salvos nos arrays e põe de volta na tabela */ function startViewPort(){ if(first+viewPort<dataGrid.length && first>=0){ clearTable(); tabela=document.getElementById('data1'); for(var i=0;i<viewPort;i++){ var dataLine=dataGrid[first+i]; //De acordo com o W3C, eu consigo pegar uma referência à linha em tempo de criação. var linha=tabela.insertRow(i); for(var j=0;j<dataLine.length;j++){ var celula=linha.insertCell(j); celula.innerHTML=dataLine[j]; } if(first%2!=0){ if(i%2!=0)tabela.rows[i].style.background="#fdecde"; } else{ if(i%2==0)tabela.rows[i].style.background="#fdecde"; } } } } function firstRow(){ first=0; startViewPort(); } function prevRow(){ if(first!=0)first-=1; startViewPort(); }/* Com as condicionais evita-se de modificar a variável de forma desordenada e se ter um certo efeito de "congelamento" da página visível. */ function nextRow(){ if(first!=dataGrid.length-viewPort-1)first+=1; startViewPort(); } function lastRow(){ first=dataGrid.length-viewPort-1; startViewPort(); } --> </script> </head> <body onload="init();"> <fieldset><legend>Tabela teste</legend> <table id="data1Header"> <tr id="header1"> <th> X </th> <th> X </th> <th> X </th> <th> X </th> </tr> </table> <table id="data1"> <tr id="line1"> <td>a</td> <td>a</td> <td>a</td> <td>a</td> </tr> <tr id="line2"> <td>b</td> <td>b</td> <td>b</td> <td>b</td> </tr> <tr id="line3"> <td>c</td> <td>c</td> <td>c</td> <td>c</td> </tr> <tr id="line4"> <td>d</td> <td>d</td> <td>d</td> <td>d</td> </tr> <tr id="line5"> <td>e</td> <td>e</td> <td>e</td> <td>e</td> </tr> <tr id="line6"> <td>f</td> <td>f</td> <td>f</td> <td>f</td> </tr> <tr id="line7"> <td>g</td> <td>g</td> <td>g</td> <td>g</td> </tr> <tr id="line8"> <td>h</td> <td>h</td> <td>h</td> <td>h</td> </tr> <tr id="line9"> <td>i</td> <td>i</td> <td>i</td> <td>i</td> </tr> </table> <table id="data1Footer"> <tr id="footer1"> <th> <button type="button" onclick="firstRow();"> << </button> </th> <th> <button type="button" onclick="prevRow();"> < </button> </th> <th> <button type="button" onclick="nextRow();"> > </button> </th> <th> <button type="button" onclick="lastRow();"> >> </button> </th> </tr> </table> </fieldset> </body> </html>
Notícias do site Ultimo Segundo
Nenhum coment�rio foi encontrado.
Customizar a Instalação do Linux Debian com Preseed
Atualizando o Passado: Linux no Lenovo G460 em 2025
aaPanel - Um Painel de Hospedagem Gratuito e Poderoso
Um modo leve de ouvir/ver áudio/vídeo da internet em máquinas pererecas
Resolver algumas mensagens de erro do SSH
Instalar módulo de segurança do Banco do Brasil Warsaw do tipo .run
Bora fazer um teste? mbti (10)
Instalação de Certificados .Cer no Ubuntu 24.04 (0)
O que você está ouvindo agora? [2] (193)
Procrastinação e autossabotagem são problemas muito comuns na sociedad... (8)