Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]getElementsByClass, coś nie gra
cisu
post 4.04.2010, 21:17:24
Post #1





Grupa: Zarejestrowani
Postów: 157
Pomógł: 1
Dołączył: 15.03.2008
Skąd: Mirostowice Dolne

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


Mam problem z pewną funkcją, którą znalazłem w internecie. Otóż potrzebuję zrobić coś na styl: jest kilka zakładek (nie wiem ile, generowanie dynamiczne) i po kliknięciu w jedną, reszta się chowa a tylko ta jedna pokazuje (chodzi o odnośniki do tych zakładek). Poszukałem trochę i znalazłem takie cuś jak getElementsByClass. Wygląda to tak:

[JAVASCRIPT] pobierz, plaintext
  1. function getElementsByClass( searchClass, domNode, tagName) {
  2. if (domNode == null) domNode = document;
  3. if (tagName == null) tagName = '*';
  4. var el = new Array();
  5. var tags = domNode.getElementsByTagName(tagName);
  6. var tcl = " "+searchClass+" ";
  7. for(i=0,j=0; i<tags.length; i++) {
  8. var test = " " + tags[i].className + " ";
  9. if (test.indexOf(tcl) != -1)
  10. el[j++] = tags[i];
  11. }
  12. return el;
  13. }
[JAVASCRIPT] pobierz, plaintext

Działa to mniej więcej tak (pokażę na również znalezionym przykładzie):
[JAVASCRIPT] pobierz, plaintext
  1. function showtab()
  2. {
  3. var tabs = getElementsByClass('test');
  4. for(i=0; i<tabs.length; i++)
  5. tabs[i].style.display = 'none';
  6. }
[JAVASCRIPT] pobierz, plaintext

że po wywołaniu funkcji chowają się wszystkie divy i inne cuda, które mają klasę test. No właśnie to nie działa. Nie ma błędu, bo skrypt leci dalej ale coś nie jest jak powinno być. Moje pytanie właśnie tego dotyczy. Jak to naprawić? Będę wdzięczny za pomoc.
Go to the top of the page
+Quote Post
mortus
post 4.04.2010, 22:11:40
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


A dlaczego nie użyjesz gotowej funkcji getElementsByClassName? Kod który podałeś wygląda dobrze, ale nie chce mi się go testować.
Go to the top of the page
+Quote Post
AdIoS_Neo
post 5.04.2010, 01:01:37
Post #3





Grupa: Zarejestrowani
Postów: 159
Pomógł: 43
Dołączył: 8.03.2009

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


Witaj, skrypt działa tak jak ma działać czyli ukrywa wszystkie elementy które mają klasę "test". Musisz wskazać mu który ma zostawić widoczny [rozwiązanie]:
[JAVASCRIPT] pobierz, plaintext
  1. <html>
  2. <head>
  3. <title>...</title>
  4. <script type="text/javascript">
  5. function getElementsByClass( searchClass, domNode, tagName) {
  6. if (domNode == null) domNode = document;
  7. if (tagName == null) tagName = '*';
  8. var el = new Array();
  9. var tags = domNode.getElementsByTagName(tagName);
  10. var tcl = " "+searchClass+" ";
  11. for(i=0,j=0; i<tags.length; i++) {
  12. var test = " " + tags[i].className + " ";
  13. if (test.indexOf(tcl) != -1)
  14. el[j++] = tags[i];
  15. }
  16. return el;
  17. }
  18.  
  19. function showtab() {
  20. var tabs = getElementsByClass('test');
  21. for(i=0; i<tabs.length; i++)
  22. tabs[i].style.display = 'none';
  23. this.style.display = "block";
  24. }
  25. window.onload = function(){
  26. var u = getElementsByClass('test');
  27. for(var i=0;i<u.length;i++){
  28. u[i].onclick = showtab;
  29. }
  30.  
  31. }
  32. </script>
  33. </head>
  34. <body>
  35.  
  36. <div class="test">aaa1</div>
  37. <div class="test">aaa2</div>
  38. <div class="test">aaa3</div>
  39. <div class="test">aaa4</div>
  40. <div class="test">aaa5</div>
  41. <div class="test">aaa6</div>
  42. <a href="#" class="test">lol</a>
  43. </body>
  44. </html>
[JAVASCRIPT] pobierz, plaintext

Jak masz jakieś pytania co do tego to pisz.

Ten post edytował AdIoS_Neo 5.04.2010, 01:04:16
Go to the top of the page
+Quote Post
cisu
post 5.04.2010, 14:37:41
Post #4





Grupa: Zarejestrowani
Postów: 157
Pomógł: 1
Dołączył: 15.03.2008
Skąd: Mirostowice Dolne

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


dzięki za pomoc, w końcu zadziałało smile.gif
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 Wersja Lo-Fi Aktualny czas: 17.06.2025 - 01:28