![]() |
![]() ![]() |
![]() |
![]()
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 376 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 799 Pomógł: 1827 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 799 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
https://www.audero.it/blog/2018/05/16/event...-in-javascript/
i ogólnie: https://www.google.com/search?q=javacript+d...+events+anchors -------------------- |
|
|
![]()
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 799 Pomógł: 1827 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 799 Pomógł: 1827 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 799 Pomógł: 1827 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 799 Pomógł: 1827 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 :
![]() ![]() |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 6 799 Pomógł: 1827 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 799 Pomógł: 1827 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? -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 26.04.2025 - 04:25 |