Я использовал функцию Джона Ресига getStyle
из Pro JavaScript Techniques для получения стиля элементов:
function getStyle(elem, name) {
// J/S Pro Techniques p136
if (elem.style[name]) {
return elem.style[name];
} else if (elem.currentStyle) {
return elem.currentStyle[name];
}
else if (document.defaultView && document.defaultView.getComputedStyle) {
name = name.replace(/([A-Z])/g, "-$1");
name = name.toLowerCase();
s = document.defaultView.getComputedStyle(elem, "");
return s && s.getPropertyValue(name);
} else {
return null;
}
}
Однако этот метод возвращает стили по умолчанию для элемента, если стиль не указан:
http://johnboxall.github.com/test/getStyle.html
альтернативный текст http://img.skitch.com/20081227-8qhxie51py21yxuq7scy32635a.png
Возможно ли получить только указанные в таблице стилей стили элемента (и вернуть значение null, если стиль не определен)?
Обновление:
Зачем мне такой зверь? Я создаю небольшой компонент, который позволяет пользователям стилизовать элементы. Один из стилей, которые можно применить: text-align
- left
, center
, right
- при использовании getStyle
элементов без стилей по умолчанию используется center
. Это делает невозможным определение того, является ли элемент центрированным, потому что пользователь хотел, чтобы он был центрирован или центрирован, потому что это стиль по умолчанию.