Filtrowanie tabeli

0

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ę.

1

Powinieneś poprawić kilka rzeczy w funkcji execFilter:

  1. Sprawdzaj, czy tabFilter[i] ma jakąś wartość. Jeśli nie ma wartości, to nie filtruj po tej kolumnie.
  2. 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.
  3. Proponuję używać item.style.display = "table-row"; zamiast item.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;
			}
		}
	});
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1