Я хочу получить значение 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 "";
}
|