Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Akcje w html vs akcje w JS
mat-bi
post
Post #1





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


Witam,

Może dziwnie tytuł brzmi, ale nie wiedziałem, jak to nazwać (IMG:style_emoticons/default/wink.gif)

Chodzi mi o to, jak to poprawniej jest?

  1. <a href="#" onclick="sprawdz(1)">Sprawdź!</a>


czy
  1. <a href="#" class="sprawdz" post_id="1">Sprawdź!</a>


i przypisanie onclick w js?

Kiedyś się uczyłem z książki o AJAX'ie, że poprawniejsza jest druga metoda, ale w końcu nie wiem, bo większość stron wykorzystuje pierwszą. To jak to w końcu jest?

Ten post edytował mat-bi 22.06.2011, 22:10:48
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
zegarek84
post
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


Cytat(mat-bi @ 22.06.2011, 23:08:09 ) *
Kiedyś się uczyłem z książki o AJAX'ie, że poprawniejsza jest druga metoda, ale w końcu nie wiem, bo większość stron wykorzystuje pierwszą. To jak to w końcu jest?

każdy robi jak komu wygodniej i wszystko zależy od rozmachu jaki będzie miała "aplikacja" napisana w JS...

jednak ze swojej strony zalecam bindowanie elementów drzewa DOM z poziomu skryptów... lepiej sobie taki nawyk wyrobić zwłaszcza, jeśli kiedyś miałbyś pisać coś większego i chciałbyś skorzystać z dobrodziejstwa domknięć lub poukrywać pewne funkcje/metody przed światem...
[JAVASCRIPT] pobierz, plaintext
  1. (function(){
  2. function jakas1(){};
  3. var jakas2 = function(){};
  4. })();
[JAVASCRIPT] pobierz, plaintext

z poziomu html'a nie podepniesz zdarzeń do funkcji jakas1 i jakas2... poza tym, jeśli sobie wyrobisz dobre nawyki to zaczniesz może też buforować w zmiennych elementy drzewa DOM do ponownego ich wykorzystania a nie co chwila szukać je od nowa co jest znaczeni wolniejsze - inna sprawa, że w zasadzie każdy pomija takie kwestie optymalizacji...
Go to the top of the page
+Quote Post
mat-bi
post
Post #3





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


Właśnie też mi sie wydaje, zę 2 sposób jest trochę lepszy i go zawsze stosuje.
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Podstawowe pytanie. Widziałeś gdzieś w specyfikacji HTML by dla elementu A był zdefiniowany atrybut POST_ID?
Go to the top of the page
+Quote Post
mat-bi
post
Post #5





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


Wiem o tym, dlatego zapytałem sie, co jest poprawniejsze?
Go to the top of the page
+Quote Post
kamil4u
post
Post #6





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


IMO najpoprawniej:
  1. <span id="test">Kliknij</span>

  1. #test{
  2. color: blue;
  3. text-decoration: underline;
  4. /*i inne, żeby to wyglądało jak link -> np. łapka*/
  5. }

[JAVASCRIPT] pobierz, plaintext
  1. //1 -> addEventListener i attachEvent
  2. // lub
  3. //2 -> document.getElementById('test').onclick = ....
[JAVASCRIPT] pobierz, plaintext


Na dobrą sprawę powinno się korzystać z pierwszego sposobu(1 w JS), ale osobiście, z przyzwyczajenia korzystam z 2(ma odrobinę mniejsze możliwości).

Polecam:
- https://developer.mozilla.org/pl/DOM/elemen...ddEventListener
- http://pornel.net/onclick (ma swoje lata)

Ten post edytował kamil4u 24.06.2011, 11:37:37
Go to the top of the page
+Quote Post
Fifi209
post
Post #7





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(kamil4u @ 24.06.2011, 12:37:18 ) *
Na dobrą sprawę powinno się korzystać z pierwszego sposobu(1 w JS), ale osobiście, z przyzwyczajenia korzystam z 2(ma odrobinę mniejsze możliwości).

Chyba właśnie na odwrót, to sposób pierwszy ma mniejsze możliwości i moim zdaniem jest bardziej niepoprawny.
Go to the top of the page
+Quote Post
kamil4u
post
Post #8





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Zobacz co jest napisane w pierwszym linku jaki podałem (IMG:style_emoticons/default/smile.gif) - miłej lektury

--edit--
Pozwolę sobie jeszcze dorzucić(dla zainteresowanych): http://webhelp.pl/artykuly/obsluga-zdarzen-w-przegladarkach/

Ten post edytował kamil4u 24.06.2011, 11:49:24
Go to the top of the page
+Quote Post
Fifi209
post
Post #9





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Wybacz, pisząc pierwszy i drugi sposób myślałem, że odnosisz się do pierwszego postu autora - moje niedoczytanie, przepraszam. (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
mat-bi
post
Post #10





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


Spokojnie, znam się na JS trochę, wiem o tym, jak zrobić to w JS (IMG:style_emoticons/default/smile.gif)

Co do @kamil4u, zgodzę się, ale jeżeli mam trochę takich samych linków, których chciałbym za raz oprogramować (np. generowanych przez foreach), a każdy z nich ma inny identyfikator(np. wspomniany już post_id), to co wtedy?

@EDIT:
tak BTW, jeżeli mam tylko jedną akcję na np. click, nie muszę korzystać z DOM wersja 2 (IMG:style_emoticons/default/smile.gif)

Ten post edytował mat-bi 24.06.2011, 16:45:40
Go to the top of the page
+Quote Post
kamil4u
post
Post #11





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Cytat
Co do @kamil4u, zgodzę się, ale jeżeli mam trochę takich samych linków, których chciałbym za raz oprogramować (np. generowanych przez foreach), a każdy z nich ma inny identyfikator(np. wspomniany już post_id), to co wtedy?

Klasa + CSS? Chyba, że pytasz jak to ugryźć od sprawy JS. Sposobów jest wiele, np. stworzyć tablicę trzymającą odpowiednie informacje lub skorzystać z jakiegoś atrybutu - też zgodnie z jego przeznaczeniem.

Generalnie chodzi o to, żeby korzystać z elementów HTML zgodnie z ich przeznaczeniem. Link to <a>, a przypisując akcję nie korzystasz z ich funkcjonalności - stąd np. <span>.

Cytat
@EDIT:
tak BTW, jeżeli mam tylko jedną akcję na np. click, nie muszę korzystać z DOM wersja 2 smile.gif

Nic nie musisz (IMG:style_emoticons/default/smile.gif) - jest to traktowane jako dobry nawyk, bo np.:
- masz czytelniejszy kod
- roboty wiedzą co indeksować, a co nie
- łatwość w późniejszej edycji
- mobilność kodu -> przy wykorzystywaniu przy innych projektach
Go to the top of the page
+Quote Post
mat-bi
post
Post #12





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


Lekko odkopię (IMG:style_emoticons/default/smile.gif)

Ostatnio nad tym myślałem i wymyśliłem - a może np. id posta trzymać w JSON'ie ? Jak myślicie? Jako identyfikator pola np. id węzła
Go to the top of the page
+Quote Post
kamil4u
post
Post #13





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Opisz co chcesz dokładnie osiągnąć i w jakim przypadku. Często nie opłaca się tworzyć czegoś zaawansowanego do mniejszego projektu - wszystko zależy co potrzebujesz zrobić.
Go to the top of the page
+Quote Post
zegarek84
post
Post #14





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


dokładnie tak jak napisał @kamil4u - zależy co miałeś na myśli...

zakładając, że całe drzewo DOM budujesz na podstawie formatu JSON to nawet id'ki można pominąć i w tym formacie stworzyć fikcyjne id'ki których nie przypisze się własnością a się rozpozna węzeł drzewa - fakt, przeczytałem to drugi raz i niejasno piszę więc głupoty - ale wszystko zależy od założeń - podobnie jeśli chcesz mieć źródło czystego xhtml'a to najprościej załadować dane z html'a i własności drzewa dom do formatu pośredniego (naturalnym jest w js json) i skorzystać z jakichś widoków i przekształcić to w xhtml'a - też głupoty piszę - ale tak mogą powiedzieć tylko Ci co piszą tylko na jedną przeglądarkę - akurat mechanika js wszędzie jest taka sama - ale nie wszystkie rzeczy wszędzie są zaimplementowane i nie wszędzie otrzymujemy ten sam kod html z innerHTML i jego odmian jak html() w jQuery (mam na myśli różnice w przeglądarkach)....

sorki za offtopick ;p
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: 22.08.2025 - 22:07