Tabela paginada e com diferenciação de cor nas linhas
Publicado por sombriks 22/08/2006
[ Hits: 6.544 ]
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>
Cookie - Número de visitas do usuário
Redirecionador de acordo com o browser
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 (0)
Programa fora de escala na tela do pc (33)
Eu queria adicionar a incon do wifi e deixa transparente no fluxbox no... (0)









