Maak je eigen DIY JavaScript zoekbalk

Vandaag ga ik je laten zien hoe je een eenvoudige zoekbalk kan maken voor een grote tabel of lijst. Soms worden lijsten of tabellen zo groot dat het een opgave wordt om de data eruit te halen die je nodig hebt. In zo'n geval kan een zoekbalk uitkomst bieden. De zoekbalk die we vandaag gaan maken is een simpele vanilla JavaScript zoekbalk. Om een zoekbalk nuttig te laten zijn moet je natuurlijk wat hebben om in te zoeken dus ik heb een lijst met personages van mijn favoriete TV-serie Game of Thrones met de acteurs en actrices door wie ze gespeeld worden erachter.

Vandaag gaan we het anders doen in plaats van een verhaal over een software gerelateerd onderwerp doen we een korte tutorial over ontwikkeling. Ik ga je laten zien hoe je een eenvoudige zoekbalk kan maken voor een grote tabel of list op de webpagina. Soms worden HTML lijsten of tabellen zo groot dat het een opgave wordt om de data eruit te halen die je nodig hebt. In zo’n geval kan een dynamische zoekbalk uitkomst bieden. De zoekbalk voor een webpagina die we vandaag gaan ontwikkelen is een simpele vanilla JavaScript zoekbalk.

Het eerste waar we mee moeten beginnen is de zoekbalk zelf dit is gewoon een simpel html input field

<input type="text" id="searchbar_got" name="search" placeholder="Zoek je favoriere acteur of personage van Game of Thrones">
  

We voegen was css toe zodat de zoekbalk er wat mooier uitziet

#searchbar_got {
   padding: 10px;
   border-radius: 5px;
   font-size: 15px;
   background: #f8fafe;
}

Hier gebeurt de magie nu gaan we ons JavaScript schrijven. We beginnen met het ophalen van de input van de zoekbalk. Daarna willen we dat als we wat invoeren dat hij de zoekfunctie begint uit te voeren dit kunnen we doen met het event keyup.

const searchInput = document.getElementById("searchbar_got");
searchInput.onkeyup = searchGOT;
 

We hebben nu het stukje JavaScript geschreven dat de functie searchGOT wordt aangeroepen. Dan is het nu tijd om de functie te scrijven. Eerst moeten we de waarde van het input veld ophalen en in een variabele stoppen die zetten we vervolgens om in uppercase letters. En de tabel waar we doorheen willen zoeken zetten we ook in een variabele vervolgens halen we alle rijen van de tabel op en zetten die in een array.

function searchGOT() {
    const table = document.getElementById(‘gottable’);
    const allCharacters = table.getElementsByTagName(’tr’);
}
  

Nu we alle data hebben opgehaald is het tijd om er doorheen te loopen. We gebruiken hiervoor een simpele for loop, we beginnen de for loop op positie 1 zodat we de headers overslaan. Daarna halen we van elke rij de cellen in die rij op en beginnen een nieuwe loop door de cellen in de row. Nu kunnen we door beiden kolommen zoeken. We gebruiken nu een if statement om te kijken of de waarde die we hebben ingevuld ergens voorkomt in de cellen van de row. Ook zetten we de cell waarde om naar UpperCase zodat hij precies hetzelfde is als onze input waarde van de zoekbalk. Voor het zoeken gebruiken we de indexOf() method als deze niks vind geeft hij de waarde -1 dus als onze input een waarde hoger dan -1 teruggeeft heeft hij hem gevonden. Als hij hem gevonden heeft zet hij de waarde true voor de variabele hit.

for (var i=1; i < allCharacters.length; i++) {
    var cellData = allCharacters[i].getElementsByTagName(’td’);
    for (var j=0; j < cellData.length; j++) {
       if(cellData[j].innerHTML.toUpperCase().indexOf(searchValue) > -1) {
       var hit = true;
    }
}

Als we gevonden hebben waar we naar op zoek zijn moeten we nu de resultaten die we niet nodig hebben weghalen. Dit gaan we doen met een simpel if/ else statement als de waarde hit op true staat doen we niks maar als hij op false staat willen we dat die rij niet te zien is. Dit doen we door er een css waarde met display: none aan toe te kennen. Wel zetten we in het else statement nog een if statement die de eerste rij die van de headers overslaat. En als hij op hit = true staat doen we niks en zetten we de waarde weer terug naar false.

if (hit) {
   allCharacters[i].style.display = "";
   hit = false;
} else {
   if (i > 0) {
      allCharacters[i].style.display = "none";
   }  
}

Als we gevonden hebben waar we naar op zoek zijn moeten we nu de resultaten die we niet nodig hebben weghalen. Dit gaan we doen met een simpel if/ else statement als de waarde hit op true staat doen we niks maar als hij op false staat willen we dat die rij niet te zien is. Dit doen we door er een css waarde met display: none aan toe te kennen. Wel zetten we in het else statement nog een if statement die de eerste rij die van de headers overslaat. En als hij op hit = true staat doen we niks en zetten we de waarde weer terug naar false.

Volledige code

<input type="text" id="searchbar_got" name="search" placeholder="Zoek je favoriere acteur of personage van Game of Thrones">

<style>
#searchbar_got {
   padding: 10px;
   border-radius: 5px;
   font-size: 15px;
   background: #f8fafe;
}
</style>

<script>
   const searchInput = document.getElementById("searchbar_got");
   searchInput.onkeyup = searchGOT;

   function searchGOT() {
       const table = document.getElementById(‘gottable’);
       const allCharacters = table.getElementsByTagName(’tr’);
   }

   for (var i=1; i < allCharacters.length; i++) {
       var cellData = allCharacters[i].getElementsByTagName(’td’);
       for (var j=0; j < cellData.length; j++) {
          if(cellData[j].innerHTML.toUpperCase().indexOf(searchValue) > -1) {
          var hit = true;
       }
   }

   if (hit) {
      allCharacters[i].style.display = "";
      hit = false;
   } else {
      if (i > 0) {
        allCharacters[i].style.display = "none";
      }  
   }
</script>

Als softwarebedrijf zijn wij gespecialiseerd in software ontwikkeling op maat. Vaak komen onze klanten met complexe opdrachten en vragen ons om interactive widgets en andere interactieve web componenten te ontwikkelen. Ook op de vraag “kunnen we bij jullie een professionele webshop laten maken” antwoorden we graag ja. Blij worden we van het bouwen van online platformen. Ons team ontwikkeld op basis van open-source technologie zoals JavaScript, React, Node.js, dynamische SVG of PHP. We dragen bij aan deze opensource technologie, delen deze binnen ons team en leren zo iedere keer iets nieuws. Heb jij een uitdaging of een onoplosbare technische kwestie? Laat het ons weten, we zoeken samen naar de juiste oplossing!


Neem contact op

Lees hier onze blogs!

Breid je kennis uit met de 4BIS Blog...

Wat is een widget?

Software-modernisering, kennisbank, React, Bedrijfssoftware

Veel mensen komen widgets tegen, maar deze zijn niet altijd duidelijk. Zoveel mensen vragen zich af: wat is een widget? Wat een widget precies is leggen wij in deze blog uit.

Lees meer

WP admin error 500 in Wordpress: 5 oplossingen

WordPress, kennisbank

De WP admin error 500 in Wordpress komt bijzonder vaak voor. De Internal Server Error met statuscode HTTP error 500 is minder makkelijk op te lossen dan andere errors, waarbij de oplossing vaak voor de hand ligt. De HTTP error 500 kan veroorzaakt worden...

Lees meer

WordPress en Plugins – Een wereld die voor je open gaat!

WordPress, Webontwikkeling, Ecommerce / Webshop, kennisbank, WooCommerce

Met plugins kan je functionaliteit van wordpress uitbreiden of geheel nieuwe functies aan wordpress toevoegen. Plugins kan je zelf maken, mits je verstand hebt van php, of je kan ze downloaden.

Lees meer

En wat kunnen we voor jou betekenen?_

Wil je meer weten of heb je interesse? Neem dan gerust direct contact met ons op, per telefoon of via de mail.
Of maak gebruik van één van onze contactformulieren zodat we je zo snel en gepast mogelijk antwoord kunnen geven. We horen graag van je!

back to top