Показать сообщение отдельно
  #9 (permalink)  
Старый 16.02.2011, 11:53
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от 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
Ответить с цитированием