javascript - 通过 javascript 检索 CSS 属性值

标签 javascript jquery css

目前我想通过 javascript 读出 css 的背景颜色,以用所需的颜色更新 Canvas 。到目前为止,我通过在 html 中创建一个 dummy 对象来使其工作,该对象包含我可以从中读取的 css:

CSS 内容:

.logmessage-debug {
    color: #fff;
    background-color: #999999;
}

.logmessage-info {
    color: #fff;
    background-color: #5cb85c;
}

.logmessage-warn {
    color: #fff;
    background-color: #f0ad4e;
}

.logmessage-error {
    color: #fff;
    background-color: #d9534f;
}

.logmessage-fatal {
    color: #fff;
    background-color: #d955d9;
}

HTML 部分:

<canvas id="myCanvas" width="200" height="200"></canvas>
<!-- The dummy objects allowing access to the css properties -->
<div id="debug" class="logmessage-debug"></div>
<div id="info" class="logmessage-info"></div>
<div id="warn" class="logmessage-warn"></div>
<div id="error" class="logmessage-error"></div>
<div id="fatal" class="logmessage-fatal"></div>

<script type="text/javascript">
    updateCanvas();
</script>

JavaScript 部分:

function updateCanvas() {
    $.ajax({
        url: "api/myWebService",
        success: function (severityLevel) {
            var c = document.getElementById("myCanvas");
            var ctx = c.getContext("2d");
            ctx.fillStyle = getSeverityColorFromStyle(severityLevel);
            ctx.fillRect(0, 0, c.clientWidth, c.clientHeight);
        },
        complete: function() {
            setTimeout(updateCanvas, 2000);
        }
    })
}

function getSeverityColorFromStyle(styleName) {
    // Any other way to read the css background color
    // directly instead of asking the dummy object?
    return $("#" + styleName).css("background-color");
}

到目前为止,上述方法按预期工作,我可以得到我喜欢的所需颜色。但是添加这些虚拟对象只是为了访问所需的 css 值让我感到不舒服。是否存在从 css 中检索这些值的直接方法?

最佳答案

您可以创建一个循环遍历页面上所有样式表/规则并尝试匹配它的函数

function getStyle(className) {
var classes = document.styleSheets[0].rules || document.styleSheets[0].cssRules
for(var x=0;x<classes.length;x++) {
    if(classes[x].selectorText==className) {
            return (classes[x].cssText) ? classes[x].cssText : classes[x].style.cssText;
        }
    }
}

有关更多详细信息,请参阅之前的帖子 How do you read CSS rule values with JavaScript?

关于javascript - 通过 javascript 检索 CSS 属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20948736/

相关文章:

javascript - 我的 jquery 表单验证中出现问题

javascript - webkit 浏览器的 jQuery ajax 问题

css - 使用 LESS 函数简单地 fy 我的 less

javascript - 基本的js验证

javascript - 从表单字段构建在新窗口中打开的 URL

javascript - jQuery DatePicker 上的 Destroy 方法删除了 DatePicker,但是当我重新实例化一个新的时,仍然选择了先前选择的 Date 值

javascript - 阻止 Div 滚出 View

css - 即使父级设置为相对,绝对定位也不起作用

javascript - 如何评估我的 Web 应用程序中的用户代码输入

javascript - 在AngularJS中重定向后设置Flash消息