【问题标题】:How do I get the element's background color in javascript?如何在javascript中获取元素的背景颜色?
【发布时间】:2013-06-16 17:41:55
【问题描述】:

我需要获取先前由样式表定义的元素的背景颜色,以确定将使用 javascript 动态创建的新元素的样式。

我尝试使用 'backgroundColor' 属性,但返回值为空。该值需要先用js设置,然后可以用属性检索(不是十六进制)。是否有其他替代方案而无需修改元素?喜欢使用 offsetWidth 吗?

CSS:

#mybox {
   width: 100px;
   height: 100px;
   margin: auto;
   background-color: #eb5;
}
#buttons {
   text-align: center;
}

HTML:

<div id="mybox"></div> <div id="buttons">
    <input type="button" value="set" onclick="setColor('#ddd')" />
    &nbsp;
    <input type="button" value="get" onclick="getColor()" />
</div>

JS:

function getColor(color){
    var box = document.getElementById("mybox");
    alert(box.style.backgroundColor);
}
function setColor(color){
    var box = document.getElementById("mybox");
    box.style.backgroundColor = color;
}

JSFiddle: http://jsfiddle.net/mevmike/FjkYA/

【问题讨论】:

    标签: javascript css


    【解决方案1】:

    试试这个:

    function getStyle(element, property) {
        if (element.currentStyle)
            return this.currentStyle[property];
        else if (getComputedStyle)
            return getComputedStyle(element, null)[property];
        else
            return element.style[property];
    }
    

    将此代码放在脚本文件的开头,并以这种方式访问​​它

    function getColor(color){
        var box = document.getElementById("mybox");
        alert(getStyle(box, 'backgroundColor'));
    }
    

    编辑:“压缩”版本

    function getStyle(element, property) {
        return getComputedStyle ? getComputedStyle(element, null)[property] : 
        element.currentStyle ? element.currentStyle[property] : element.style[property];
    }
    

    【讨论】:

    • 这段代码让人想起prototype.js……为什么这是个坏主意?也许直到 IE9 才支持 defaultView .. developer.mozilla.org/en-US/docs/Web/API/document.defaultView
    • @HerringtonDarkholme:Prototype 今天在哪里?好吧,这有点刺耳。 :-) (注意:我曾经参与过 Prototype 项目,早在 2005-2006 年。)但是,如果它不能在重要的浏览器上运行(IE8 拥有约 23% 的全球用户),它就不是一个好主意。
    • 那个有效。我的目标浏览器是那些只支持 HTML5 的浏览器。
    • 更好的是,我认为您可以安全地扩展 DOM。对@T.J.Crowder 吗?
    猜你喜欢
    • 2013-05-29
    • 2010-12-25
    • 2020-07-06
    • 2020-12-23
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    相关资源
    最近更新 更多