| 
	| 
	
	| 
		
	| 
			
			 
			
				16.02.2011, 11:05
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 08.02.2011 
						Сообщений: 15
					 
		
 |  |  
	| 
				наследный display
			 свойство display, как известно, наследуется от родительского элемента. Но если display у элемента не указан, то style.display вернёт значение по умолчанию, хотя у родительского элемента display может отличатся. 
Как узнать реальный display
 
Например
 
<div style="display:none">
<span id="spanid">блабла<span>
</div>
<script>
alert(document.getElementById('spanid').style.display);
</script>
В результате получим не none, что было бы логично, а ''.			 Последний раз редактировалось Sonkkorh, 16.02.2011 в 11:08.
 |  |  
	| 
		
	| 
			
			 
			
				16.02.2011, 11:24
			
			
			
		 |  
	| 
		
			|  | Тлен       |  | 
					Регистрация: 02.01.2010 
						Сообщений: 6,601
					 
		
 |  |  
	| Как раз таки логично именно ''.Тут: document.getElementById('spanid').style только то, что указанно <span id="spanid" style="тут"><span>.(ну и то, что указанно собсно через style)
 			 Последний раз редактировалось Aetae, 16.02.2011 в 11:30.
 |  |  
	| 
		
	| 
			
			 
			
				16.02.2011, 11:26
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 08.02.2011 
						Сообщений: 15
					 
		
 |  |  
	| и? Ты просто скопировал мой пример. Результат-то от этого не поменялся. |  |  
	| 
		
	| 
			
			 
			
				16.02.2011, 11:28
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 08.02.2011 
						Сообщений: 15
					 
		
 |  |  
	| вопрос как раз в том, чтоб определить результирующий display, тот который браузер отобразит. |  |  
	| 
		
	| 
			
			 
			
				16.02.2011, 11:29
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 09.11.2009 
						Сообщений: 1,101
					 
		
 |  |  
	| Если не ошибаюсь то свойство display не наследует значение у родителя. 
Можно узнать вот так:
 
<html>
<head>
</head>
<body>
<div style="display:none">
<span id="spanid">блабла<span>
</div>
<script>
function GetCssStyle(e){
    if (e.currentStyle) return e.currentStyle;
    else if (window.getComputedStyle) return window.getComputedStyle(e,null);
}
alert(GetCssStyle(document.getElementById('spanid') ).display);
</script>
</body>
</html>
Но так вернет default значение - "inline", так как я уже говорил, что если я не ошибаюсь, то display не наследует значение у родителя.
				__________________"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."  Мой сертификат :-D клацай |  |  
	| 
		
	| 
			
			 
			
				16.02.2011, 11:38
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 08.02.2011 
						Сообщений: 15
					 
		
 |  |  
	| в том-то и дело что наследуетесли открыть пример в браузере, то "блабла" не видно. Аналайзер хрома и фф показывают, что display наследуется от родителя.
 |  |  
	| 
		
	| 
			
			 
			
				16.02.2011, 11:41
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 09.11.2009 
						Сообщений: 1,101
					 
		
 |  |  
	| а вам не подойдет свойство visibility ? 
<html>
<head>
</head>
<body>
<div style="visibility: hidden">
<span id="spanid">блабла<span>
</div>
<script>
function GetCssStyle(e){
    if (e.currentStyle) return e.currentStyle;
    else if (window.getComputedStyle) return window.getComputedStyle(e,null);
}
alert(GetCssStyle(document.getElementById('spanid') ).visibility);
</script>
</body>
</html>
Только нужно учесть что visibility будет занимать место на страничке, поэтому и спрашиваю что если не подойдет  
				__________________"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."  Мой сертификат :-D клацай			 Последний раз редактировалось walik, 16.02.2011 в 11:45.
 |  |  
	| 
		
	| 
			
			 
			
				16.02.2011, 11:45
			
			
			
		 |  
	| 
		
			|  | CacheVar       |  | 
					Регистрация: 19.08.2010 
						Сообщений: 14,298
					 
		
 |  |  
	| 
	
 
	| Сообщение от Sonkkorh |  
	| если открыть пример в браузере, то "блабла" не видно |  
	
 Это не потому что свойство display наследуется...    В противном случае все что в диве имело бы 
 
display: block;
 
А он таки у всех свой... |  |  
	| 
		
	| 
			
			 
			
				16.02.2011, 11:53
			
			
			
		 |  
	| 
		
			|  | CacheVar       |  | 
					Регистрация: 19.08.2010 
						Сообщений: 14,298
					 
		
 |  |  
	| 
	
 
	| Сообщение от Sonkkorh |  
	| вопрос как раз в том, чтоб определить результирующий display, тот который браузер отобразит. |  
	
 Как вариант ответа
 
	
 
	| Цитата: |  
	| Я хочу получить значение CSS свойства, но возвращается пустая строка. Например, хочу узнать цвет текста элемента и пишу 
document.getElementById("elemId").style.color
, а результат пустая строка. Что делать?
 Объект style элемента (document.getElementById("elementId").style), содержит только те значения, которые были заданны явно в атрибуте style в тэге элемента или были предварительно назначены через скрипт. Если Вы задаёте CSS свойства через тэг <STYLE></STYLE> или внешние листы стилей, то они не будут присутствовать в объекте style элемента.
 
 Возникает вопрос, как узнать вычисленное значение свойства элемента, если оно не задано в атрибуте style элемента и не было инициализировано через скрипт?
 
 Воспользуйтесь функцией (работает начиная с NN 6, IE 5, Opera 7):
 
 
 
function getElementComputedStyle(elem, prop)
{
  if (typeof elem!="object") elem = document.getElementById(elem);
  
  // external stylesheet for Mozilla, Opera 7+ and Safari 1.3+
  if (document.defaultView && document.defaultView.getComputedStyle)
  {
    if (prop.match(/[A-Z]/)) prop = prop.replace(/([A-Z])/g, "-$1").toLowerCase();
    return document.defaultView.getComputedStyle(elem, "").getPropertyValue(prop);
  }
  
  // external stylesheet for Explorer and Opera 9
  if (elem.currentStyle)
  {
    var i;
    while ((i=prop.indexOf("-"))!=-1) prop = prop.substr(0, i) + prop.substr(i+1,1).toUpperCase() + prop.substr(i+2);
    return elem.currentStyle[prop];
  }
  
  return "";
}
 |  
	
 Взято тут
http://www.tigir.com/javascript.htm
			
			
	
			
			
			
			
			
				  |  |  
	| 
		
	| 
			
			 
			
				16.02.2011, 11:53
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 08.02.2011 
						Сообщений: 15
					 
		
 |  |  
	| он наследуется, если не указан явно. в данном случае у span он явно не указан.
 visibility не подойдёт, т.к. пишу скрипт для GM. Приходится работать с уже свёрстанной страничкой.
 |  |  |  |