[js] pobieranie height przy visible:none

Odpowiedz Nowy wątek
2009-03-27 14:57
anonim#1
0

Witam. Chciałbym pobrać w js wysokość elementu sposobem document.getelementbyid(id).style.height (lub innym) gdy obiekt ma ustawione visible:none. W grę nie wchodzi pokazywanie na chwilę w tle obiektu, z pewnych przyczyn. Czy jest jakiś sposób??

Pozostało 580 znaków

2009-03-27 19:16
ss
0

Jezeli w Twoim poscie visible to tak naprawde visibility a none to hidden, to moja odpowiedz brzmi: owszem, da sie ;) jquery nie ma z tym najmniejszego problemu.

Pozostało 580 znaków

2009-03-27 19:33
autor
0

Przepraszam, pisałem z pamięci, i mi się pomyliło. Chodzi o display:none. Wybaczcie mi.

Pozostało 580 znaków

2009-03-27 19:46
ss
0

W przypadku display:none;, jezeli ustawisz wielkosc elementu za pomoca height, bedzie go mozna odczytac. Jezeli wysokosc tego elementu nie bedzie przez Ciebie ustawiona, odczytana wartoscia bedzie auto.

Pozostało 580 znaków

2009-03-27 19:59
autor
0

function change_size(height){
var body=document.getElementById('body');

if (body.clientHeight<height && body.clientHeight!=height){
    body.clientHeight= body.clientHeight+1; 
    change_size(height);
}

if (body.clientHeight>height && body.clientHeight!=height){
    body.clientHeight=body.clientHeight-1;  
    change_size(height);        
}

}

Mam taki kod. Wysokości się poprawnie odczytują, jednak wysokośc body nie ulega zmianie. Instrukcje które są po wywołaniu funkcji też się nie wykonują. Nie następuje rekurencja. Gdzie tu jest błąd?

Pozostało 580 znaków

2009-03-27 20:01
0

próbowałem też przez setTimeout(change_size(height),10)zamiast samego change_size(height), bo chcę aby wysokośc się rozszerzała udając animowane. Też nie działa :)

edycja:
poprawiłem kod, teraz wygląda on tak:

function change_size(cel){
    var body=document.getElementById('body');
    var element=document.getElementById(cel);
    var height=document.getElementById(cel).clientHeight;

    var wys=body.clientHeight;

    if (wys<height){
        wys++;
        body.style.height=wys+'px';

        setTimeout("change_size(cel)",300);

    }

    if (wys>height){
        wys--;
        body.style.height-=wys+'px';    
        setTimeout("change_size(cel)",300);     
    }
    }

Wszystko fajnie, ale nie działa rekurencja :)

Pozostało 580 znaków

2009-03-27 21:16
0

No ku... po pierwsze to się wstawia w tagach <.php> czy jeszcze tam czym, po drugie to te wasze chore nawyki z PHP mnie wpieniają do reszty.

Poprawny kod do 'rekurencji':

setTimeout("change_size('"+cel+"')",300);

To nie jest tak jak, to:

echo("$zmienna");

Co zresztą i tak uważam za kolejny świetny żart...


Women were the reason I became a monk - and, ah, the reason I switched back...

Pozostało 580 znaków

2009-03-27 21:36
0

Ale panie, uczę się js, stosuję go pierwszy raz, Dzięki za pomoc, zaraz sprawdzę, ale nie reaguj tak ostro..

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0