При попытке получить значение CSS свойства, возвращается пустая строка

Когда столкнулся с этой проблемой, не понимал в чём дело. Вроде свойство задано, но при попытке получить, пустая строка.
Как выяснилось, объект style элемента содержит только значения, явно заданные в атрибуте style в тэге элемента.
Если Вы задаёте CSS свойства через тэг <STYLE></STYLE> или внешние листы стилей, то они не будут присутствовать в объекте style элемента.

Как узнать значение свойства элемента, если оно не задано явно в атрибуте style элемента?

function getElementStyle(element, property)
{
	if (typeof element!="object") element = document.getElementById(element);

	// внешние стили в Мазиле, Сафари и Опере
	if (document.defaultView  &&document.defaultView.getComputedStyle)
	{
		if (property.match(/[A-Z]/)) property = property.replace(/([A-Z])/g, "-$1").toLowerCase();
		return document.defaultView.getComputedStyle(element, "").getPropertyValue(property);
	}
	
	// внешние стили в IE
	if (element.currentStyle)
	{
		var i;
		while ((i=property.indexOf("-"))!=-1) 
			property = property.substr(0, i) + property.substr(i+1,1).toUpperCase() + property.substr(i+2);
		return element.currentStyle[property];
	}
	
	return "";
}

Функция принимает два аргумента: id элемента (или сам элемент) и название свойства.

  Категории: css
  • http://erstd.net erste

    А зачем, если есть $(element).css(style)?
    http://erstd.net/style_test.html например.

    • http://suvitruf.ru Suvitruf

      А без jquery оно работать будет? )

      • http://erstd.net erste

        А зачем придумывать костыли?

        • http://suvitruf.ru Suvitruf

          На момент, когда эта штука писалась, jquery вроде как и не было.
          Собственно, даже если и был, не люблю стороннее использовать, если можно стандартными средствами.

          • http://erstd.net erste

            окей.