Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z document.getElementById
Wowas
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 27.06.2011

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


Czy da się zrobić tak, żeby document.getElementById pobierał nie tylko pierwszego diva z podanym id ale wszystkie w dokumencie?
Go to the top of the page
+Quote Post
Aqu
post
Post #2





Grupa: Zarejestrowani
Postów: 279
Pomógł: 58
Dołączył: 14.07.2012

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


  1. document.querySelectorAll('#id');
Go to the top of the page
+Quote Post
Turson
post
Post #3





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


ID powinno byc unikalne dlaczego wiec masz ich więcej? Użyj klasy
Go to the top of the page
+Quote Post
PrinceOfPersia
post
Post #4





Grupa: Zarejestrowani
Postów: 717
Pomógł: 120
Dołączył: 18.04.2009

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


Dokładnie. W ogóle id jako takie się powinno rzadko stosować.


--------------------
Go to the top of the page
+Quote Post
Crozin
post
Post #5





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

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


Cytat
W ogóle id jako takie się powinno rzadko stosować.
Mógłbyś rozwinąć?
Go to the top of the page
+Quote Post
PrinceOfPersia
post
Post #6





Grupa: Zarejestrowani
Postów: 717
Pomógł: 120
Dołączył: 18.04.2009

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


Id powinno być unikalne w całym dokumencie. Jednak wiele rzeczy wydaje się unikalne, a wcale takie nie jest.

Wyobraź sobie taki scenariusz. Robisz stronę, na stronie umieszczasz jakiś widżet, np. carousel, przypisujesz mu id carousel, i za pomocą tego id odwołujesz się do tego elementu wszędzie, w CSS:
  1. #carousel {
  2. padding: 10px 10px;
  3. ...
  4. }
  5.  
  6. ...
  7. #carousel {
  8. ...
  9. }

w JS:

[JAVASCRIPT] pobierz, plaintext
  1. $("#carousel .slide-change").click(function () {
  2. ...
  3. };
  4.  
  5. setInterval(function () {
  6. $("#carousel .....").changeSlide(); // taki tam pół-pseudo-kod ;)
  7. });
[JAVASCRIPT] pobierz, plaintext


itp. itd.

No i spoko, działa.
A teraz niespodzianka. Okazuje się, że chcesz na stronie umieścić drugi taki sam widżet carousela, tylko na dole strony. I wszystko musisz pozmieniać (bo używając id zakładałeś że carousel będzie jeden).
A jakbyś pisał od początku tak
  1. .carousel {
  2. ...
  3. }

czy tak:
[JAVASCRIPT] pobierz, plaintext
  1. $(".carousel .slide-change").click(function () {
  2. });
[JAVASCRIPT] pobierz, plaintext

miałbyś łatwiejsze zadanie....


Z drugiej strony id czasem są niezbędne jeśli np. chcemy zidentyfikować jakiś element po to, żeby dało się na niego wejść przez adres z hashem na końcu, np. w kodzie strony wikipedii masz:
  1. <span class="mw-headline" id="External_links">External links</span></h2>

dzięki temu adres: http://en.wikipedia.org/wiki/Cat#External_links (z #External_links na końcu) przenosi się od razu na dół strony do zewnętrznych linków. Albo też id się przydają jak chcemy jakiś element jednoznacznie zidentyfikować w skryptach (np. robimy portfolio i chcemy pokazywać kontakt do nas w animowanym okienku dialogowym. Więc tworzymy ukryty element o id #kontakt, i jak klikamy button z napisem "Kontakt" to wywołuje on np. taki kod
[JAVASCRIPT] pobierz, plaintext
  1. $("#kontakt").show();
[JAVASCRIPT] pobierz, plaintext

i pokazuje się to, bardzo konkretne okienko z danymi kontaktowymi,.

W takich sytuacjach używanie id MA sens, bo identyfikujesz bardzo konkretne okienko na stronie, które chcesz pokazać. Z drugiej strony nawet do takiego okienka prędzej bym dodał jakąś klasę (na przykład klasę "dialog") a potem stylował np.
  1. .dialog {
  2. font-size: 12px;
  3. }

bo jednak - jaką mam pewność, że za chwilę nie będę potrzebował innego, podobnego okienka "O mnie"? Takie rzeczy lubią się same "mnożyć"...
Tak samo sam przycisk z napisem "Kontakt". Mógłbym go nazwać #contact-button, ale co jeśli będę chciał mieć 2 przyciski/linki na stronie, które do tego samego służą?
więc klasa, albo dodanie jakiegoś atrybutu (np. <a class="dynamic-link" href="#contact">kontakt</a> czy coś podobnego. A potem np.
[JAVASCRIPT] pobierz, plaintext
  1. $(".dynamic-link").click(function () {
  2. var id = $(this).attr('href');
  3. $(id).show();
  4. });
[JAVASCRIPT] pobierz, plaintext



Myślę, że to kwestia żeby odróżnić elementy/rzeczy/zachowania, które prawdopodobnie będą się mnożyć/powtarzać na stronie (wtedy raczej id będzie kiepskim pomysłem), od rzeczy unikalnych, które musimy zidentyifkować (wtedy id będzie akurat dobrym pomysłem). Ale jednak wydaje mi się, że ludzie nadużywają id i wrzucają je na siłę (co widać i po tym wątku).

Ten post edytował PrinceOfPersia 29.04.2015, 22:01:11


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 18:45