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??
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.
Przepraszam, pisałem z pamięci, i mi się pomyliło. Chodzi o display:none. Wybaczcie mi.
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.
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?
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 :)
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...
Ale panie, uczę się js, stosuję go pierwszy raz, Dzięki za pomoc, zaraz sprawdzę, ale nie reaguj tak ostro..