Cześć,
Chciałbym zrobić filtrowanie tabeli dla każdej kolumny osobno. O ile dla jednej kolumny nie mam problemu to nie mam pomysłu jak zrobić dla dwóch i więcej...
Mój kod: https://jsfiddle.net/maluchh/kw3vhopz/31/
Będę wdzięczny za każdą sugestię.
0
1
Powinieneś poprawić kilka rzeczy w funkcji execFilter
:
- Sprawdzaj, czy
tabFilter[i]
ma jakąś wartość. Jeśli nie ma wartości, to nie filtruj po tej kolumnie. - Gdy przynajmniej jedna wartość odfiltrowuje wiersz tabeli, to nie przywracaj tego wiersza, gdy w kolejnej kolumnie wartość nie została odfiltrowana, tylko pozostaw cały wiersz ukryty.
- Proponuję używać
item.style.display = "table-row";
zamiastitem.style.removeProperty("display");
.
Twój kod z moimi poprawkami:
function execFilter() {
let filterLength = tabFilter.length;
table.querySelectorAll("tbody tr").forEach(function(item) {
item.style.display = "table-row";
for (let i = 0; i < filterLength; i++) {
if (tabFilter[i] && !item.getElementsByTagName("td")[i].textContent.toUpperCase().includes(tabFilter[i])) {
item.style.display = "none";
break;
}
}
});
}