Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] Mechanizm zakładek różnych
!*!
post
Post #1





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


  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ć.

Ten post edytował !*! 11.08.2010, 11:34:38
Go to the top of the page
+Quote Post
skowron-line
post
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Wrzuć na jsfiddle.org i daj link, to zobaczymy co jest nie tak, pamietaj ze nikomu się nie chce kopiować tego co wklejasz.
Go to the top of the page
+Quote Post
everth
post
Post #3





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


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.
Go to the top of the page
+Quote Post
!*!
post
Post #4





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


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ć.
Go to the top of the page
+Quote Post
skowron-line
post
Post #5





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


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ę.

Ten post edytował skowron-line 11.08.2010, 14:33:14
Go to the top of the page
+Quote Post
!*!
post
Post #6





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


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.

Ten post edytował !*! 11.08.2010, 14:46:18
Go to the top of the page
+Quote Post
skowron-line
post
Post #7





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


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]
Go to the top of the page
+Quote Post
!*!
post
Post #8





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


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
Go to the top of the page
+Quote Post
everth
post
Post #9





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


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
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: 8.10.2025 - 00:52