Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Mechanizm zakładek różnych
Forum PHP.pl > Forum > Przedszkole
!*!
  1. <ul>
  2. <li id="tab1" onclick="activetab(1);">menu1</li>
  3. <li id="tab2" onclick="activetab(2);">menu2</li>
  4. <li id="tab3" onclick="activetab(3);">menu3</li>
  5. <li id="tab4" onclick="activetab(4);">menu4</li>
  6. <li id="tab5" onclick="activetab(5);">menu5</li>
  7. <li id="tab6" onclick="activetab(6);">menu6</li>
  8. </ul>


[JAVASCRIPT] pobierz, plaintext
  1. function activetab(e){
  2. maxtab = 6;
  3. tab = document.getElementById('tab'+e);
  4. for(i=1; i<=maxtab; i++){
  5. if(i==e){tab.setAttribute("id",'tab'+e+"a");} else {document.getElementById('tab'+i).setAttribute("id",'tab'+i);}
  6. }
  7. }
[JAVASCRIPT] pobierz, plaintext


Każda z zakładek ma inny kolor ustalony w css, chciałbym po kliknięciu zmienić jej styl na np. 'tab1a", "tab2a" itd. Jednak jeśli kliknę w inną zakładkę poprzednia powinna przejść do stanu pierwotnego, czyli "tab1", "tab2" ... Jednak mam z tym problem, ponieważ działa to tylko przy pierwszym kilknięciu, dla wybranej zakładki, reszta przestaje reagować.
skowron-line
Wrzuć na jsfiddle.org i daj link, to zobaczymy co jest nie tak, pamietaj ze nikomu się nie chce kopiować tego co wklejasz.
everth
Taki prosty algorytm - na początku funkcji dla dla wszystkich zakładek usuwamy klasę 'hover' - później dodajemy klasę hover dla aktywnej zakładki. W CSSie stylujesz sobie hover w powiązaniu z id elementu. Przemyśl to sobie i zaimplementuj. Twoja metoda też mogłaby pójść (przenieś zmienną tab gdzieś przed funkcję) ale jest bardziej pokręcona.
!*!
Całość prezntuje się mniej więcej tak:

http://jsfiddle.net/4N6wk/

Każdy z elementów li, ma inny kolor, po kliknięciu na niego ma zmienić kolor (każdy element zaznaczony li ma inny), a pozostałe elementy mają się resetować.
skowron-line
I jezeli masz 3 zakładki to jeżeli pętla będzie szukać tab6 to wywali błąd i koniec zabawy.
[JAVASCRIPT] pobierz, plaintext
  1. tab.setAttribute("id",'tab'+e+"a"); <--- tu zmieniasz id na tab1e
[JAVASCRIPT] pobierz, plaintext

a dalej szukasz tab1

Ogólnie źle się do tego zabrałeś, no ale to temat na inna bajkę.
!*!
A jak miałbym się do tego zabrać?

Zakładek jest 6, po prostu skróciłem to w przykładzie.

Kod
if(i==e){tab.setAttribute("id",'tab'+e+'a');} else {document.getElementById('tab'+i).setAttribute("id",'tab'+i);}


Poprawiłem, jednak nie resetują się inne zakładki.
skowron-line
Cytat(!*! @ 11.08.2010, 14:40:32 ) *
A jak miałbym się do tego zabrać?


Powinieneś nadać ID dla ul i z niego wyjąć wszystkie LI wtedy skrypt sam bedzie wiedział ile jest zakładek

Cytat(!*! @ 11.08.2010, 14:40:32 ) *
Poprawiłem, jednak nie resetują się inne zakładki.

Przeczytaj jeszcze raz mój post
[quote]
tab.setAttribute("id",'tab'+e+'a');
[/qoute]
!*!
Kombinuję z tym nadal, jednak nie wiem jak uzyskać efekt końcowy... Teraz zmienia się każda pozycja po kolei, bez powrotu do stanu pierwotnego...

[JAVASCRIPT] pobierz, plaintext
  1. function activetab(e){
  2. ultab = document.getElementById("ultab");
  3. li = ultab.getElementsByTagName("li");
  4. countli = li.length;
  5.  
  6. tab = document.getElementById('tab'+e);
  7. getid = tab.getAttribute("id");
  8.  
  9. for(i=1; i<=countli; i++){
  10.  
  11. if(i==e){
  12. if(getid == 'tab'+e){tab.setAttribute("id",'tab'+e+'a');} else{if(getid == 'tab'+e+'a'){tab.setAttribute("id",'tab'+e+'a');}}
  13. }
  14. else{
  15. if(getid == 'tab'+e+'a'){document.getElementById('tab'+i).setAttribute("id",'tab'+i);}
  16. }
  17.  
  18. }
  19. }
[JAVASCRIPT] pobierz, plaintext
everth
Ech, zrozum co to jest Event Object i jak go przekazać do funkcji to powinna ci działać
[JAVASCRIPT] pobierz, plaintext
  1. function highLight(event) {
  2. obj = event.target;
  3. childs = obj.parentNode.children;
  4. resetHighLight();
  5. addHighLight();
  6.  
  7. function resetHighLight() {
  8. for (elem in childs) {
  9. elem.className.replace('hover','');
  10. }
  11. }
  12. function addHighLight() {
  13. obj.className += ' hover';
  14. }
  15. }
[JAVASCRIPT] pobierz, plaintext
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.