如何将参数传递给函数以获取当前样式

时间:2011-04-24 17:09:53

标签: javascript cross-browser

美好的一天, 我想知道如何在IE中获取currentStyle,将参数传递给函数参数,如下所示:

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

如果我使用类似的功能从Firefox,Chrome等获取Style,则会产生。

使用这样的函数:

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

,其中value是backgroundColor之类的元素属性,即:

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

.... 它会返回FF,Chrome中的backgroundColor ..但不会在Internet Explorer中返回

可能的解决方案..?

日Thnx ..

请我不要寻找jQuery解决方案......

2 个答案:

答案 0 :(得分:1)

这里我用来检索样式属性值

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);
}

答案 1 :(得分:0)

这是(遗憾的)非常复杂。

我编写了一个独立于浏览器的解析器,但我无法与您分享。

除非您正在编写自己的框架,否则我不得不问,为什么您希望能够解决所有问题? 是否有您想要的特定属性(或某些属性)?因为那可能会容易得多。

如果你只想要背景颜色,那么.style.backgroundColor就足够了。

此外,您的示例脚本中存在错误:

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

应该是:

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

这不是我第一次犯同样的错误;) - 花了我半天才找到它