Filtrowanie tabeli

RM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 41
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ę.

BU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 422
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:

Kopiuj
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;
			}
		}
	});
}

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.