2

I'm trying to insert a search function into my website, the one I found can find data from multiple columns (which is great) but the problem is that after the search results get displayed, The text header isn't showing (which isn't good). Does anyone know how to show the search results including the text header? I'm still new to coding, sorry.

<script> function tableSearch() { // Declare variables var input, filter, table, tr, td, i; input = document.getElementById("myInput"); filter = input.value.toUpperCase(); table = document.getElementById("T_SJSM"); tr = table.getElementsByTagName("tr"); // Loop through all table rows AND COLUMNS, and hide those who don't match the search query for (i = 0; i < tr.length; i++) { td = tr[i].getElementsByTagName("td"); var match = false; //Loop trough all columns for(var j = 0; j < td.length; j++) { if(td[j]) { txtValue = td.textContent || td.innerText; if (td[j].innerHTML.toUpperCase().indexOf(filter) > -1) { match = true; } } } //Match found in one or multiple columns if (match) { tr[i].style.display = ""; } else { tr[i].style.display = "none"; } } } </script> 
2
  • Well why you don't start from index 1 instead of 0 to exclude first tr ? Commented May 19, 2022 at 7:08
  • If your table used headers (developer.mozilla.org/en-US/docs/Learn/HTML/Tables/…) your data could be easily distinguished. Commented May 19, 2022 at 7:25

3 Answers 3

1

You need to skip the first row (which is the header row)

So start your loop from 1

for (i = 1; i < tr.length; i++) { 
Sign up to request clarification or add additional context in comments.

2 Comments

Thank you so much for this, I've been trying to find an answer for a week and you just helped me in just a few minutes. I appreciate the help a lot 😄👍
Happen to all of us when we were new to programming. No worries. Glad to help you!👍
0

Your table structure should be like this

<table> <thead> <tr></tr> </thead> <tbody> <tr></tr> <tr></tr> <tr></tr> <tr></tr> <tr></tr> </tbody> </table> 

If your table is looking like this then you can change only one line like this:

tr = document.querySelector('tbody').getElementsByTagName("tr"); 

Comments

0

table = document.getElementById("T_SJSM");

add "T_SJSM" Id to the tbody

or start first loop (tr loop) from 1.

1 Comment

Yeah, i just changed the loop from 0 to 1. Thanks for helping! 😄👍

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.