[js] pobieranie height przy visible:none

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??

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.

0

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

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.

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?

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 :)

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

0

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

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