Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Szybkie ukrywanie wierszy w tabeli
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
nospor
Hej, mam tabele z duza iloscia wierszy. Tabela jest filtrowana dynamicznie i wiersze albo sa chowane albo pokazywane.
Aby schowac/pokazac wiersz dodaje pooprostu dla TR odpowiednia klase lub ja usuwam, wyglada to mniej wiecej tak

Kod
if (sth) {
elTr.classList.add("hidden-element");
} else {
elTr.classList.remove("hidden-element");
}

Jak widzicie uzywam do tego czystego js.
Jednak dziala to straaaaasznie wolno. Nie jest to problem warunkow bo gdy usune dodawanie/chowanie klasy to calosc wykonuje sie momentalnie. Gdy tylko przywroce te dwie linijki dodajace/usuwajace klase calosc zamula niemilosiernie.

Problem wystepuje na IE i FF. Na chrome dziala bez zarzutow.

Czy istnieje jakas inna metoda na chowanie/pokazywanie elementow by to dzialalo znosnie? Probowalem tez chowac/pokazywac bezczelnie tr ale to dziala jeszcze wolniej.
trueblue
Myślę, że to nie kwestia samej metody, lecz renderingu tabeli.

Ale może tak coś się poprawi?
  1. elTr.className=elTr.className.replace('hidden-element','');
  2. elTr.className+=' hidden-element';


Bezczelnie, czyli poprzez style.display?
nospor
Twoje metoda przyspieszyla nieco ale mimo wszystok jeszcze wolno.

Bezczelne - tak, display
trueblue
To może zamiast ukrywać:

  1. tr.hidden-element td{
  2. font-size:0;
  3. padding:0;
  4. }
nospor
Nie, raz ze nie dziala to szybciej to jeszcze tabela rozwalona wink.gif
trueblue
Nie bardzo wiem jak to mogło rozwalić tabelę, co najwyżej nie są do końca ukrywane komórki (mają bardzo małą wysokość).

Może tak:
  1. tr.hidden-element{
  2. position:absolute;
  3. left:-10000px;
  4. }
nospor
To i tak nie ma sensu skoro nie dziala szybciej

Edit: A nie, przepraszam, dziala szybciej smile.gif
Jeszcze jakies cenne uwagi?

edit
@trueblue dzieki za wskazowki smile.gif
Comandeer
Zamiast takiego ukrywania zawsze jest metoda z clip, która może być szybsza. Do tego można popróbować z opóźnieniem renderingu przy pomocy requestAnimationFrame.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.