![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 1.09.2021 Ostrzeżenie: (0%) ![]() ![]() |
Posiadam stronę z prawie 2000 elementami DOM (węzłów), na której znajduje się między innymi prosta tabela napisana za pomocą jQuery z ponad 300 linkami do innych podstron (wzorowana na:)
https://jqueryui.com/tabs/#default Oto jej układ:
Do tego skrypty:
plus skrypt do otwierania poszczególnych stron z hotelami:
Wszystko ładnie działa, ale podczas sprawdzania, np. w PageSpeed Insights pojawia się ostrzeżenie - "Unikaj zbyt dużego DOM - 1795 elementów". Ponieważ na stronie startowej wyświetla się tylko tablica "#tabs-1", a pozostałe i tak trzeba później kliknąć żeby je zobaczyć, to tablice od "#tabs-2" do "#tabs-9" nie muszą się ładować od razu. I tu prośba o pomoc. W jaki najprostszy sposób można zoptymalizować rozmiar DOM? Jak zmusić resztę kodu od #tabs-2" do nie ładowania się przy starcie? I czy JavaScript rzeczywiście opłacalnie przyspieszy ładowanie i działanie strony? Czy sensowniej jest zostawić kod taki jak jest bez JS? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 381 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
A po co tam tabele?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 1.09.2021 Ostrzeżenie: (0%) ![]() ![]() |
A dlaczego nie?
Po prostu taka tabelka ładnie wygląda. A mogę poprosić o odpowiedzi na moje pytania? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Odpowiedzi są w manualu, do którego zresztą podałeś link.
https://jqueryui.com/tabs/#ajax |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 1.09.2021 Ostrzeżenie: (0%) ![]() ![]() |
Tak, wiem, ale żeby załadować kolejne tablice musi być dodany jakiś kod Java Script.
Ja zaś JS w ogóle nie znam, stąd prośba o pomoc. Wiem, że w głównym katalogu ma być tylko pierwsza tablica - <li><a href="#tabs-1" >Al-Ar</a></li> A cała reszta w kolejnym lub kolejnych tablicach, ale jak dodać resztę to już nie wiem. I we wzorcu podają między innymi link do swojej strony "demos", którego ja nie dodaję do swojej strony. Poza tym chciałbym aby zawsze nowe podstrony otwierały sięw określonej skryptem wielkości. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Przecież pod spodem jest " view source" z przykładem
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 1.09.2021 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za "otworzenie oczu".
Pokombinowałem i udało się adaptować przykład do moich celów, ale pozostał jeszcze jeden problem. Otóż nowe okno z wybranym hotelem otwiera się w określonym miejscu i określonych wymiarach TYLKO na pierwszej tablicy, która otwiera się na głównej stronie. Na kolejnych, dołączanych stronach, powiedzmy wg przykładu, np. ajax/content1.php gdy do strony dołączam ten sam skrypt:
poszczególne hotele otwierają się na pełnym ekranie, a chciałbym zachować efekt, jak na pierwszej tablicy, czyli wymiary okna i położenie. Przyznam szczerze, że tego nie rozumiem. Mogę prosić o jeszcze jedną podpowiedź. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 1.09.2021 Ostrzeżenie: (0%) ![]() ![]() |
Dodałem ten skrypt:
zmieniłem .pagination a na '.#tab a (nie wiem czy dobrze) ale gdzie dodać info o wymiarach i położeniu, bo jak poprzednio otwierają się okna na cały ekran? |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
#tabs
To ma być selektor CSS określający, który nadrzędny element (nieładowany poprzez Ajax) będzie przechwytywał zdarzenia, a nie wartość atrybutu href. Czyli ten drugi skrypt w przykładzie. Tam oprócz sprawdzania tagu, należy dodać sprawdzanie klasy (musisz nadać klasy elementom <a> w tabeli, aby odróżnić je od elementów <a> w zakładkach. Porównaj swoją procedurę z nową, dokładnie widać gdzie ma być otwieranie okna. Ten post edytował trueblue 2.10.2021, 08:24:57 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 1.09.2021 Ostrzeżenie: (0%) ![]() ![]() |
Może zadaję banalne pytania, ale kompletnie nie znam JavaScript, stąd prośba o pomoc.
Zgodnie z poradą zmieniłem skrypt:
Ale nie wiem jak mam nadać klasy elementom <a> w tabeli, aby odróżnić je od elementów <a> w zakładkach? Mam plik css do głównej strony, ale tam mam klasy jak w przykładzie na górze strony - #tabs, tbody, .tr, .td i całą resztę. Do stron ajax/content1.php do ajax/content8.php nie mam żadnych stylów. No i nadal, jak poprzednio otwierają się okna na cały ekran. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
A jak komórkom w tabeli nadałeś klasę td1?
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 1.09.2021 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
A nie wydaje Ci się, że klasy nadałeś w HTML?
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 1.09.2021 Ostrzeżenie: (0%) ![]() ![]() |
Nie. Są w pliku*.css
Nie bardzo rozumiem pytanie. Mam plik *.php i plik *.css ze stylami. A nie wydaje Ci się, że klasy nadałeś w HTML? Może nie rozumiem pytania? Może bardziej łopatologicznie? Nie jestem programistą! A na JS nie znam się kompletnie! |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli uważasz, że nadałeś klasy dla tych elementów <td> w CSS, to spróbuj nadać w CSS klasy dla elementów <a>, które chcesz, aby po kliknięciu otwierały okno.
Podpowiem Ci już dalszy krok, po rozwiązaniu powyższego:
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 1.09.2021 Ostrzeżenie: (0%) ![]() ![]() |
Zrobiłem tak:
Nie pokazuje się kliknięta strona a pojawia się komunikat: Fetching results at https://www.xxx/hotel116.html Ale dodając w drugiej linii:
lub
pojawia się komunikat Uncaught SyntaxError: missing ) after argument list i pojawiają się tylko hotele ze strony głównej. Pozostałe mają komunikat jak wyżej - Fetching results at https://www.xxx/hotel116.html Wstawiam nie to co trzeba? w arkuszu stylów mam :
(IMG:style_emoticons/default/puke.gif) Sorry za moją niewiedzę! (IMG:style_emoticons/default/puke.gif) |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Wstawiam nie to co trzeba? Wstawiasz nie to co trzeba. Metoda contains przyjmuje jeden argument i jest to string (nazwa klasy). Google Twoim przyjacielem: https://ferrante.pl/books/html/chapter7.html |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 1.09.2021 Ostrzeżenie: (0%) ![]() ![]() |
Zrobiłem tak:
zmieniłem tabelę i kod JS:
Do tego w arkuszu stylów dodałem kontrolnie byle jakie parametry klasy:
No i znowu nie pojawiają się strony z hotelami tylko taki komunikat: Fetching results at https://www.xxx/hotel127.html Czyli są pobierane, ale nie wyświetlane. Dlaczego - nie mam pojęcia. Na pewno napiszesz, że znowu źle coś robię. I na pewno to będzie prawda... Niestety. |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Klasę powinieneś nadać elementowi <a>, przecież od kilku postów o tym piszemy.
Funkcja wyświetla wyłącznie: "Fetchning...", bo taki jest jej kod. Gdzie tam jest otwieranie okna? |
|
|
![]()
Post
#21
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 1.09.2021 Ostrzeżenie: (0%) ![]() ![]() |
Zmieniłem
na
z kropką i bez. Próbowałem wszystkiego, co mi przyszło na myśl. I nic. Pisałem wcześniej, że JavaScript jest mi kompletnie nieznany. Nic więcej nie wymyślę. Domyślam się, że próbujesz mnie naprowadzać, ale jak widzisz nie łapię JS za cholerę... |
|
|
![]()
Post
#22
|
|
Grupa: Zarejestrowani Postów: 6 381 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Classlist to taki worek na klasy (lista klas na elemencie). Contains sprawdza czy dana klasa jest w zbiorze (wystarczy poświęcić minutę na znalezienie czegokolwiek o tym). Czy według ciebie jakaś ścieżka do węzła "a" to klasa?
Ten post edytował viking 7.10.2021, 07:22:30 |
|
|
![]()
Post
#23
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 1.09.2021 Ostrzeżenie: (0%) ![]() ![]() |
W końcu pojąłem...
Ale nie spotkałem się nigdzie wcześniej z klasą dla <a>. Może to mnie w jakimś stopniu tłumaczy. Zrobiłem tak: do tego
plus
Ale nadal nie otwierają się okna, a pojawiają się: komunikat: Fetching results at https://www.xxx/ajax/content8.php oraz komunikat: Fetching results at https://www.xxx/hotel127.html Wiem, że trzeba dodać polecenie otwarcia okna, ale nie umiem tego zrobić w przypadku tego kodu JS. |
|
|
![]()
Post
#24
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Przecież kod do otwierania okna jest we wcześniejszym skrypcie, który pokazałeś i stosowałeś.
|
|
|
![]()
Post
#25
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 1.09.2021 Ostrzeżenie: (0%) ![]() ![]() |
Ten?
Mimo zastosowania pojawia się nadal: komunikat: Fetching results at https://www.xxx/ajax/content8.php oraz komunikat: Fetching results at https://www.xxx/hotel127.html Nic nie rozumiem... |
|
|
![]()
Post
#26
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Nie chodzi o to, abyś ten kod jako całość wkleił znów na stronę, bo przecież przygotowałeś nowy skrypt od obsługi linków.
Chodzi tylko o otwieranie okna, a to jest dokonywane poprzez window.open |
|
|
![]()
Post
#27
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 1.09.2021 Ostrzeżenie: (0%) ![]() ![]() |
Poddaję się.
Wierz mi, że próbowałem. kilkadziesiąt różnych wariantów, ale efekt - żaden. Jeszcze raz napiszę - KOMPLETNIE NIE ZNAM JAVASCRIPT. Dla tego jednego skryptu nie będę uczył się całego kursu JS. Jeśli możesz dać jakąś konkretną wskazówkę, będę wdzięczny, jeśli nie, to trudno. Strona będzie większa. |
|
|
![]()
Post
#28
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Podałem Ci wskazówkę w poprzednim poście.
|
|
|
![]()
Post
#29
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 1.09.2021 Ostrzeżenie: (0%) ![]() ![]() |
Wymęczyłem (czytaj - znalazłem i trochę zmieniłem) takie dwa skrypty:
W "ajax/content1.php do "ajax/content8.php zostawiłem kod:
Działa jak chcę żeby działał. Tylko dlaczego po naciśnięciu kolejnego tab/li cała tabela obniża się o około 40px (oczywiście tylko jej legenda zostaje na miejscu, a obniża się lista hoteli) skoro nic w *css nie zmieniałem? Jest jakiś sposób aby to poprawić? Pewnie właśnie w css? P.S. Wskazówkę dałeś, chociaż nie udało mi się chyba pójść Twoim torem myślenia... Ale - DZIĘKI (IMG:style_emoticons/default/exclamation.gif) ! Ten post edytował Blasius 12.10.2021, 19:08:50 |
|
|
![]()
Post
#30
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem dlaczego uparcie wklejasz stary kod, skoro napisałem abyś tego nie robił.
|
|
|
![]()
Post
#31
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 1.09.2021 Ostrzeżenie: (0%) ![]() ![]() |
A przeczytałeś, że KOMPLETNIE NIE ZNAM JAVASCRIPT?
Właśnie dlatego wklejałem na czuja ten kod. I udało się, bo na szczęście znalazłem w necie poniższy (ten drugi) skrypt:
Ten działa jak chciałem. Twój też, aczkolwiek nie działa otwieranie nowych okien o określonych wymiarach. Wiem, że Twój jest elegancki i krótszy., a jeśli chce się Tobie poprawić, to byłoby fajnie. Oczywiście dziękuję za pomoc! (IMG:style_emoticons/default/thumbsupsmileyanim.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 10:01 |