Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Szybkie ukrywanie wierszy w tabeli
nospor
post
Post #1





Grupa: Moderatorzy
Postów: 36 565
Pomógł: 6315
Dołączył: 27.12.2004




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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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?

Ten post edytował trueblue 20.10.2016, 11:25:56
Go to the top of the page
+Quote Post
nospor
post
Post #3





Grupa: Moderatorzy
Postów: 36 565
Pomógł: 6315
Dołączył: 27.12.2004




Twoje metoda przyspieszyla nieco ale mimo wszystok jeszcze wolno.

Bezczelne - tak, display
Go to the top of the page
+Quote Post
trueblue
post
Post #4





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


To może zamiast ukrywać:

  1. tr.hidden-element td{
  2. font-size:0;
  3. padding:0;
  4. }


Ten post edytował trueblue 20.10.2016, 11:40:56
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 565
Pomógł: 6315
Dołączył: 27.12.2004




Nie, raz ze nie dziala to szybciej to jeszcze tabela rozwalona (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
trueblue
post
Post #6





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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. }
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 565
Pomógł: 6315
Dołączył: 27.12.2004




To i tak nie ma sensu skoro nie dziala szybciej

Edit: A nie, przepraszam, dziala szybciej (IMG:style_emoticons/default/smile.gif)
Jeszcze jakies cenne uwagi?

edit
@trueblue dzieki za wskazowki (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Comandeer
post
Post #8





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.04.2026 - 20:34