Como filtrar/buscar tabela

Aprenda a usar JavaScript para criar tabelas filtráveis.

Filtrar tabela

Como usar JavaScript para buscar dados específicos em uma tabela.

Nome Country
Alfreds Futterkiste Alemanha
Berglunds snabbkop Suécia
Island Trading Reino Unido
Koniglich Essen Alemanha
Laughing Bacchus Winecellars Canadá
Magazzini Alimentari Riuniti Itália
Norte/Sul Reino Unido
Specialidades de Paris França

Experimente você mesmo

Criar uma tabela filtrável

Primeiro passo - Adicionar HTML:

<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Procurar nomes..">
<table id="myTable">
  <tr class="header">
    <th style="width:60%;">Nome</th>
    <th style="width:40%;">País</th>
  </tr>
  <tr>
    <td>Alfreds Futterkiste</td>
    <td>Alemanha</td>
  </tr>
  <tr>
    <td>Berglunds snabbkop</td>
    <td>Suécia</td>
  </tr>
  <tr>
    <td>Island Trading</td>
    <td>Reino Unido</td>
  </tr>
  <tr>
    <td>Koniglich Essen</td>
    <td>Alemanha</td>
  </tr>
</table>

Segundo passo - Adicionar CSS:

Definir estilos para o elemento de entrada e a tabela:

#myInput {
  background-image: url('/css/searchicon.png'); /* Adicionar ícone de pesquisa na caixa de entrada */
  background-position: 10px 12px; /* Posicionar ícone de pesquisa */
  background-repeat: no-repeat; /* Não repetir imagem do ícone */
  width: 100%; /* Largura total */
  font-size: 16px; /* Aumentar tamanho da fonte */
  padding: 12px 20px 12px 40px; /* Adicionar espaçamento interno */
  border: 1px solid #ddd; /* Adicionar borda cinzenta */
  margin-bottom: 12px; /* Adicionar espaço abaixo da caixa de entrada */
}
#myTable {
  border-collapse: collapse; /* Mesclar bordas */
  width: 100%; /* Largura total */
  border: 1px solid #ddd; /* Adicionar borda cinzenta */
  font-size: 18px; /* Aumentar o tamanho da fonte */
}
#myTable th, #myTable td {
  text-align: left; /* Alinhar texto à esquerda */
  padding: 12px; /* Adicionar margem interna */
}
#myTable tr {
  /* Adicionar borda inferior a todas as linhas da tabela */
  border-bottom: 1px solid #ddd;
}
#myTable tr.header, #myTable tr:hover {
  /* Adicionar cor de fundo cinza para o cabeçalho da tabela e ao passar o mouse sobre ele */
  background-color: #f1f1f1;
}

Terceiro passo - Adicionar JavaScript:

<script>
function myFunction() {
  // Declarar variáveis
  var input, filter, table, tr, td, i, txtValue;
  input = document.getElementById("myInput");
  filter = input.value.toUpperCase();
  table = document.getElementById("myTable");
  tr = table.getElementsByTagName("tr");
  // Percorrer todas as linhas da tabela e ocultar aquelas que não correspondem à consulta de pesquisa
  for (i = 0; i < tr.length; i++) {
    td = tr[i].getElementsByTagName("td")[0];
    if (td) {
      txtValue = td.textContent || td.innerText;
      if (txtValue.toUpperCase().indexOf(filter) > -1) {
        tr[i].style.display = "";
      } else {
        tr[i].style.display = "none";
      }
    }
  }
}
</script>

Experimente você mesmo

Dica:Se quiser realizar uma pesquisa case-sensitive, remova toUpperCase().

Dica:Se desejar buscar o país (índice 1) em vez de "nome" (índice 0), por favor tr[i].getElementsByTagName('td')[0] Mudar para [1].

Páginas relacionadas

Tutorial:Como filtrar/buscar lista