Как получить размер блока сразу после изменения его содержимого? 
		
		
		
		Задача: изменить содержимое блока и тут же получить его новую высоту, например, в переменную height. Если делать так: 
	elem.innerHTML="text"; var height=elem.clientHeight; то clientHeight получается той же, что была у элемента до изменения содержимого. Причины этого понятны, но как же в этом случае получить высоту элемента? setTimeout(function() { height=elem.clientHeight; },t); в этом случае работает, но не подходит, да и само по себе не лучшее решение.  | 
	
		
 Ну ответьте же, пожалуйста, очень надо. 
	Что примечательно, в jQuery вызовом $(elem).height() всё работает. Там, где $(elem).height() возвращает правильную высоту, elem.clientHeight возвращает 0. Такая проверка сразу же после изменения elem.innerHTML, например: console.log($(elem).height()+" "+elem.offsetHeight+" "+elem.clientHeight+" "+elem.scrollHeight); // Пишет в консоль: правильнаяВысота 0 0 0 Смотрел $().height — там тоже используются (client|offset|scroll)Height, но большую часть каши из кода функции до конца переварить не удалось.  | 
	
		
 offsetHeight правильный? Если да, то попробуйте брать clientHeight после обращения к offsetHeight. 
	 | 
	
		
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title></title>
</head>
<body>
<div id="elem"></div>
<script language="JavaScript" type="text/javascript">
var elem = document.getElementById('elem');
var height_old = elem.offsetHeight;
elem.innerHTML="text";
var height = elem.offsetHeight;
alert(height_old+' '+height);
</script>
</body>
</html>
 | 
	
		
 Цитата: 
	
 Цитата: 
	
 Этот код стоит в обработчие oncontextmenu элемента (не того, по которому кликают, а другого), если это что-то меняет.  | 
	
		
 А, чёрт с ним : ( Поместил получение значения и все операции со значением высоты в этом месте под setTimeout(fucntion(){},1). Уродливо, но что поделать. 
	Ох, как бы потом не получить чего неприятного в этой части кода.  | 
	
		
 Ура, проблема решена : ) 
	Элемент был с display:none, когда я пытался получить его размер, и сразу же после этого получал display:block. Как-то не задумывался раньше, изменяются ли значения переменных размера у элемента, когда у него display:none. Всем спасибо.  | 
| Часовой пояс GMT +3, время: 14:04. |