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,588
|
|
Как раз таки логично именно ''.
Тут: 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,225
|
|
Сообщение от Sonkkorh
|
если открыть пример в браузере, то "блабла" не видно
|
Это не потому что свойство display наследуется... В противном случае все что в диве имело бы
display: block;
А он таки у всех свой...
|
|
16.02.2011, 11:53
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,225
|
|
Сообщение от 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. Приходится работать с уже свёрстанной страничкой.
|
|
|
|