Примеры JavaScript - Я хочу получить значение CSS свойства, но возвращается пустая строка
ОГЛАВЛЕНИЕ
Я хочу получить значение 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 "";
}
Функция принимает два аргумента: id элемента или сам элемент и название свойства в формате W3C/CSS или аналогичное название свойства в JavaScript нотации (в таком же виде в котором вы его указываете при доступе через объект style).
Примеры:
var color = getElementComputedStyle("elemID", "color");
var elem = document.getElementById("elemID");
var bg = getElementComputedStyle(elem, "background-color");
//или так
var bg = getElementComputedStyle(elem, "backgroundColor");