Tabela paginada e com diferenciação de cor nas linhas
Publicado por sombriks 22/08/2006
[ Hits: 6.549 ]
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>
JSOO - Classe para manipular Querystring
Gerador de exercícios para matemática
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Instalação dualboot Windows 11 e Debian 13 (26)
Ubunto não reconhece rede ethernet (3)
Preciso recuperar videos *.mp4 corrompidos (13)









