javascript - 如何获得一个元素的背景颜色
大家讲道理
大家讲道理 2017-04-10 14:26:09
[JavaScript讨论组]

比如<p id="test" style="background-color:red;"></p>这样的元素很容易得到他的背景色,对于

<table style="background-color:red;">
    <tr>
        ...
    </tr>
</table>

这样的级联性质的元素,想获得tr的背景色该怎么做呢?window.computedStyle么?可是有时候不起作用啊

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
伊谢尔伦

如果上层元素的背景色也算作本元素的背景色,那么需要从目标元素开始逐层检查自身背景色,如没有则检查其上层元素。
以题主的table代码为栗子,先检查tr,如果有设置背景色则输出。如果没有则检查其父元素tbody(注:在特定的浏览器和页面DTD下,有可能会在table和tr之间自动补一个tbody),再没有则检查table。

大概就是这样。


对于style属性而言,获取器背景色属性比较容易。但是如果是在css文件和style标签中设置的背景色,则需要使用题目评论中 @Humphry 大大介绍的getComputedStyle来进行检查操作。

另外,如果返回值为“transparent”,或者是一个rgba值,如rgba(1,2,3,0)(其四号位alpha值为0时,不管前三个rgb值是啥都等同于透明),都可以认定为无背景色……

黄舟
function getBackgroundColor($dom) {
    var bgColor = "";
    while($dom[0].tagName.toLowerCase() != "html") {
      bgColor = $dom.css("background-color");
      if(bgColor != "rgba(0, 0, 0, 0)" && bgColor != "transparent") {
        break;
      }
      $dom = $dom.parent();
    }
    return bgColor;
  }
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号