Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]getElementsByClass
Forum PHP.pl > Forum > Przedszkole
cisu
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.
mortus
A dlaczego nie użyjesz gotowej funkcji getElementsByClassName? Kod który podałeś wygląda dobrze, ale nie chce mi się go testować.
AdIoS_Neo
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.
cisu
dzięki za pomoc, w końcu zadziałało smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.