Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

warunek

Tworzenie dynamicznych stron internetowych z zastosowaniem JavaScript, jQuery, Ajax. Dowiedz się jak to zrobić, znajdź rozwiązania swoich problemów.

warunek

Post 11.06.2012, 13:02:27

Dziś pojawił się kolejny problem niby go rozwiązałem, ale kod nie działa tak jak logika nakazuje no chyba, że o czymś nie wiem.

Kod: Zaznacz cały
function wysuwam(){

               var zmienna = document.getElementById('panel_user');
               var panel = document.getElementById('panel_user1');
               
               
            if(zmienna.style.display == "block"){
               
               zmienna.style.display = "none";
               panel.style.display = "block";
                                       }
                  
            
               
               }


i w czym problem, w css panel_user ustawiony ma na starcie display:block i ów podany warunek z js nie działa dopiero gdy zamiast znaku równości"==" wstawiam znak nierówności "!=" warunek działa, lecz też nie za dobrze bo wykonuje się tylko raz dopiero, gdy dodam droge na nie z taką samą zawartością jak na tak wszystko wykonuje się dobrze.

Tu kawałek css :

Kod: Zaznacz cały
#panel_user{position:absolute; left:0px; top:25%; height:350px; width:40px; border: 3px solid red; display: block; }
jacek21
Jacek

Posty: 30
Dołączył(a): 02.07.2011
Lokalizacja: Wieluń

Re: warunek

Post 11.06.2012, 15:26:17

.style.display zwraca tylko wartości bezpośrednio przypisane do elementu (poprzez JavaScript lub poprzez atrybut style). Własności wyliczone na podstawie samodzielnych arkuszy stylów nie są uwzględniane w obiekcie .style elementu.
Musisz odczytać tzw. wyliczony styl (computed style).

Kod: Zaznacz cały
function computedStyle(element, property){
    property = property.replace(/\-([a-z])/g, function (m, b1) {
        return b1.toUpperCase();
    };

    if (property === "float") {
        property = element.currentStyle ? "styleFloat" : "cssFloat";
    }
       
    if (window.getComputedStyle) {
        return window.getComputedStyle(element, null)[property];
    } else if (element.currentStyle) {
        return element.currentStyle[property];
    }
}

powyższe pisane z palca, bez testowania.

Mając powyższą funkcję swój kod przepisujesz w poniższy sposób

Kod: Zaznacz cały
function wysuwam(){
    var zmienna = document.getElementById('panel_user');
    var panel = document.getElementById('panel_user1');
   
    if(computedStyle(zmienna, "display") == "block"){
        zmienna.style.display = "none";
        panel.style.display = "block";
    }
}
Avatar użytkownikakuku
Rafał Kukawski

+∞
+∞

Posty: 19587
Dołączył(a): 14.04.2002


Powrót do JavaScript


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Yahoo [Bot] i 10 gości

Hosting, Domeny, SSL

Subskrypcja

Mamy 50437 zarejestrowanych użytkowników.
Najnowszy użytkownik: stypek3865


Nasi użytkownicy napisali:

  • 935644 wiadomości
  • w 246575 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)