Как я могу передать параметры в функцию, чтобы получить текущий стиль - PullRequest
0 голосов
/ 24 апреля 2011

Добрый день, Интересно, как получить currentStyle в IE, передав параметры в аргумент функции следующим образом:

function test(el,value){
  return document.getElementById(el).currentStyle[value];
}

Если бы я использовал подобную функцию для получения стиля из Firefox, Chrome и т. Д., Это привело бы к.

с помощью такой функции:

function test(el,value){
  return getComputedStyle(document.getElementById(obj))[value];
}

, где value - это свойство элемента, например backgroundColor, т.е.:

alert(test('ObjectId','backgroundColor'));

.... он вернет backgroundColor в FF, Chrome .. но не в Internet Explorer

Какие г возможных решений ..?

Thnx ..

пожалуйста, я не ищу решение jQuery ...

Ответы [ 2 ]

1 голос
/ 24 апреля 2011

Вот что я использую для получения значения свойства стиля

function getStyle(el,sProp,toInt){
    var elem = el;
    if (elem.currentStyle) {
       return toInt 
              ? parseInt(elem.currentStyle[sProp],10) 
              : elem.currentStyle[sProp] || 0;
    } else if (window.getComputedStyle) {
        var compStyle = window.getComputedStyle(elem, null)[sProp];
        return toInt ? parseInt(compStyle,10) : compStyle || 0;
    }
    return String(elem.style[sProp]||0);
}
0 голосов
/ 24 апреля 2011

Это (к сожалению) очень сложно.

Я написал независимый от браузера распознаватель, но не могу поделиться им с вами.

Если вы не пишете свой собственный фреймворк, я должен спросить, почему вы хотите иметь возможность разрешать все? Есть ли конкретное свойство (или некоторые свойства), которое вы хотите? Потому что это может быть намного проще.

Если вы просто хотите использовать цвет фона, то, вероятно, достаточно .style.backgroundColor.

Также в вашем примере скрипта есть ошибка:

alert(test('ObjectId'),'backgroundColor');

Должно быть:

alert(test('ObjectId','backgroundColor'));

Не в первый раз я совершил такую ​​же ошибку;) - мне понадобилось полдня, чтобы найти ее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...