简体   繁体   中英

Changing column on searching in html table

Created a custom search in the table using javascript. Working as expected!

Can ( Sr. ) always be 1,2,3,etc?

Meaning, In the below script, if I search "vin", it will show only that row having character "vin" in the name. So in below, there is only one. Now it's showing Sr number as 2 , but as there is only 1, it should show 1.

 $(document).ready(function() { $("#table_search").on("keyup", function() { var input, filter, table, tr, td, i, txtValue; input = document.getElementById("table_search"); filter = input.value.toUpperCase(); table = document.getElementById("table_body"); tr = table.getElementsByTagName("tr"); for (i = 0; i < tr.length; i++) { td = tr[i].getElementsByTagName("td")[1]; if (td) { txtValue = td.textContent || td.innerText; if (txtValue.toUpperCase().indexOf(filter) > -1) { tr[i].style.display = ""; } else { tr[i].style.display = "none"; } } } }); }); 
 .form-control { background-position: 10px 10px; background-repeat: no-repeat; width: 100%; font-size: 16px; padding: 12px 20px 12px 40px; border: 1px solid #ddd; margin-bottom: 12px; } table { border-spacing: 0; width: 100%; border: 1px solid #ddd; } th, td { text-align: left; padding: 16px; } tr:nth-child(even) { background-color: #f2f2f2 } 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <p><input class="form-control" id="table_search" type="text" placeholder="Search..."></p> <table> <thead> <tr> <th>Sr</th> <th>Name</th> <th>Marks</th> </tr> </thead> <tbody id="table_body"> <tr> <td class="font-elephant">1</td> <td class="font-elephant">John</td> <td class="font-elephant"><span>438</span> Passed</td> </tr> <tr> <td class="font-elephant">2</td> <td class="font-elephant">Kevin</td> <td class="font-elephant"><span>238</span> Failed</td> </tr> <tr> <td class="font-elephant">3</td> <td class="font-elephant">Lux</td> <td class="font-elephant"><span>568</span> Passed</td> </tr> <tr> <td class="font-elephant">4</td> <td class="font-elephant">Bro</td> <td class="font-elephant"><span>538</span> Passed</td> </tr> </tbody> </table> 

Just add more Sr column when searching. Try following this. Hope to help, my friend :))

$(document).ready(function() {
  $("#table_search").on("keyup", function() {
    var input, filter, table, tr, tdSr, tdName, i, txtSrValue, txtNameValue;
    input = document.getElementById("table_search");
    filter = input.value.toUpperCase();
    table = document.getElementById("table_body");
    tr = table.getElementsByTagName("tr");

    for (i = 0; i < tr.length; i++) {
      tdSr = tr[i].getElementsByTagName("td")[0];   
      tdName = tr[i].getElementsByTagName("td")[1];
      if (tdSr) {
        txtSrValue = tdSr.textContent || tdSr.innerText;
        txtNameValue = tdName.textContent || tdName.innerText;
        if (txtNameValue.toUpperCase().indexOf(filter) > -1
        || txtSrValue.toUpperCase().indexOf(filter) > -1) {
          tr[i].style.display = "";
        } else {
          tr[i].style.display = "none";
        }
      }
    }
  });
});

https://jsfiddle.net/7vnchukx/

If you actually wanted to show index number of the search result , add one 'th' element for Serial Number and a 'td' element in each 'tr' element.

And then change the .innerHTML of the Serial Number, accordingly.

CODE SNIPPET:

 <style> .form-control { background-position: 10px 10px; background-repeat: no-repeat; width: 100%; font-size: 16px; padding: 12px 20px 12px 40px; border: 1px solid #ddd; margin-bottom: 12px; } table { border-spacing: 0; width: 100%; border: 1px solid #ddd; } th, td { text-align: left; padding: 16px; } tr:nth-child(even) { background-color: #f2f2f2 } </style> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <p><input class="form-control" id="table_search" type="text" placeholder="Search..."></p> <table> <thead> <tr> <th>Serial</th> <th>Student ID</th> <th>Name</th> <th>Marks</th> </tr> </thead> <tbody id="table_body"> <tr> <td></td> <td class="font-elephant">1</td> <td class="font-elephant">John</td> <td class="font-elephant"><span>438</span> Passed</td> </tr> <tr> <td></td> <td class="font-elephant">2</td> <td class="font-elephant">Kevin</td> <td class="font-elephant"><span>238</span> Failed</td> </tr> <tr> <td></td> <td class="font-elephant">3</td> <td class="font-elephant">Lux</td> <td class="font-elephant"><span>568</span> Passed</td> </tr> <tr> <td></td> <td class="font-elephant">4</td> <td class="font-elephant">Bro</td> <td class="font-elephant"><span>538</span> Passed</td> </tr> </tbody> </table> <script> $(document).ready(function() { $("#table_search").on("keyup", function() { var input, filter, table, tr, td, i, txtValue; input = document.getElementById("table_search"); filter = input.value.toUpperCase(); table = document.getElementById("table_body"); tr = table.getElementsByTagName("tr"); for (i = 0, sr = 1; i < tr.length; i++) { td = tr[i].getElementsByTagName("td")[2]; if (td) { txtValue = td.textContent || td.innerText; if (txtValue.toUpperCase().indexOf(filter) > -1) { sn = td = tr[i].getElementsByTagName("td")[0]; sn.innerHTML = sr++; tr[i].style.display = ""; } else { tr[i].style.display = "none"; } } } }); $('#table_search').keyup(); }); </script> 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM