Вы можете использовать функцию Паоло для генерации массива стилей.

ел бы знать, возможно ли определить, чтовстроенный стиль был приписан к элементу HTML. Мне не нужно извлекать значение, а скорее просто определить, было ли оно установлено встроенным или нет.

Например, если HTML был:

<div id="foo" style="width: 100px; height: 100px; background: green;"></div>

Как я могу определить, чтоwidth, height, а такжеbackground были явно объявлены, встроенные?

Насколько я могу судить, решение может работать двумя способами. Я могу спросить его, установлен ли определенный атрибут, и он скажет мне true или false, или он может сказать мне все атрибуты, которые были установлены. Вот так:

var obj = document.getElementById('foo');
obj.hasInlineStyle('width');  //returns true;
obj.hasInlineStyle('border'); //returns false;

//or

obj.getInlineStyles();   //returns array with values:
                       // 'width' 'height' and 'background'

Меня не интересуют атрибуты css, которые наследуются через объявления в таблице стилей, только встроенные стили. И последнее, я не могу контролировать источник HTML.

Спасибо

Ответы на вопрос(1)

Решение Вопроса

Обновлено для работы с IE

Вы можете попробовать что-то вроде этого

function hasInlineStyle(obj, style) {
    var attrs = obj.getAttribute('style');
    if(attrs === null) return false;
    if(typeof attrs == 'object') attrs = attrs.cssText;
    var styles = attrs.split(';');
    for(var x = 0; x < styles.length; x++) {
        var attr = styles[x].split(':')[0].replace(/^\s+|\s+$/g,"").toLowerCase();
        if(attr == style) {
            return true;
        }
    }
    return false;
}

Так что если у вас есть такой элемент:

<span id='foo' style='color: #000; line-height:20px;'></span>

Это также имеет таблицу стилей, как это:

#foo { background-color: #fff; }

Функция вернет ...

var foo = document.getElementById('foo');
alert(hasInlineStyle(foo,'color')); // true
alert(hasInlineStyle(foo,'background-color')); // false
 Paolo Bergantino24 янв. 2009 г., 23:20
И .attr ('style') не включает объявления таблиц стилей в jQuery, только те, которые установлены через style = "" в документе.
 sam24 янв. 2009 г., 23:28
И последнее: нулевой регистр (где getAttribute ('style') равен нулю)
 sam24 янв. 2009 г., 23:18
Я просто просматривал jQuery ... похоже, они также вставляют значения таблицы стилей (в данном случае это неприемлемо). Хорошее решение, хотя :)
 sam24 янв. 2009 г., 23:21
Подождите ... не обращайте внимания на последний комментарий
 Paolo Bergantino24 янв. 2009 г., 23:19
Теперь работает без jQuery.

Ваш ответ на вопрос