Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][CSS]Przypisanie klasy, jeśli element jest obecnie aktywny
Forum PHP.pl > Forum > Przedszkole
Majkelo23
W jaki sposób w tym menu: http://www.cssmenumaker.com/menu/blue-tabbed-drop-down
przypisać klasę .active to tego odnośnika w menu, który obecnie jest kliknięty ? Obecnie jest tak, że na sztywno jest przypisana klasa .active do odnosnika Home. Ja chcę zrobić tak, że jeśli kliknę np. w about to odnośnik about uzyska klasę .active i to on będzie niebieski, a nie home. Jeśli kliknę Contact to odnośnik "Contact" będzie miał klasę .active i będzie niebieski, a nie odnośik Home itd.
Wydaje mi się, że można to zrobić jakoś za pomocą .css, myślałem, że będzie to:

Kod
.menu active


ale to jednak nie to bo nie działa.
sunpietro
w CSS masz stany: active, focus, hover, visited - ale za ich pomocą nie zrobisz tak że przeglądarka będzie wiedziała który przycisk jest aktywny.
Możesz do tego wykorzystać JS i za jego pomocą ustawiać klasę dla klikniętego elementu lub za pomocą chociażby PHP, że po przeładowaniu strony aktywny będzie przycisk odnoszący się do załadowanej strony.
Majkelo23
Właśnie, tydzień oswajam się z js i zastanawiam się jak przypisać dla danego elemenetu klasę ? Bo tekst wiem jak przypisać:

Kod
var zmienna = document.getElementById('id_pola');
var zmienna.innerHTML = 'jakis tam tekst';


I teraz dany element przyjmie TEKST - "jakis tam tekst". Ale jak to zrobić z klasą css ?
konrados
  1. document.getElementById("idElement").setAttribute("class", "className");


A aktualny url możesz pobrać tak: document.URL
Majkelo23
Kod:

Kod
  function change_class(element_id)
  {
    var document.getElementById(element_id).setAttribute("class", "active");
  }


HTML:

  1. <div class='menu'>
  2. <ul>
  3. <li id="one"><a onclick="change_class('one')" href='index.html'><span>Home</span></a></li>
  4. <li id="two"><a onclick="change_class('two')" href='#'><span>Logowanie</span></a>
  5. <ul>
  6. <li><a href='#'><span>Rejestracja</span></a></li>
  7. <li><a href='#'><span>Pryzpomnij hasło</span></a></li>
  8. </ul>
  9. </li>
  10. <li id="three"><a onclick="change_class('three')" href='#'><span>O nas</span></a></li>
  11. <li id="four"><a onclick="change_class('four')" href='#'><span>Kontakt</span></a></li>
  12. </ul>
  13. </div>


Firebug wywala mi jakies missing: before statement, wskazując na kropkę po słowie document w kodzie funkcji. Cóż znowu jest nie tak?
lobopol
Wywal z tej funkcji var
Majkelo23
Faak, działa, dzięki. Powiedz mi tylko jakiej reakcji użyć bo onclick niby działa, ale jak najade kursorem to nagle...niebieskie tło znika.
lobopol
Popatrz sobie po stylach jakie masz ustawione, może nadpisujesz :hover wygląd
Majkelo23
Kod
.active {
        background:url(images/current-bg.gif) top left repeat-x;
        color:#ffffff;
        }


Hover był, wywaliłem. Obecnie przy onclick jest tak, że tło się trzyma po kliknięciu aż do...końca ładowania się strony, wtedy znowu znika.
lobopol
To oczywiste chyba, że js nie zapamiętuje swoich stanów po przeładowaniu strony. Albo ustalasz w php przy wczytywaniu strony klasy dla aktywnej strony na podstawie adresu. Albo w js po wczytaniu strony na podstawie adresu dodajesz klasę active odpowiednim elementom (kupa roboty).
Majkelo23
ok, dzięki.
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.