javascript - 试图根据当前背景更改背景颜色 : background color has no value

标签 javascript html css

所以这是一个非常简单的应用程序。本质上,我的初始背景由 CSS 设置。我希望能够读取 javascript 中的当前背景颜色并更新它。目前,我在 updateBackground 函数中的警报根本没有显示任何文本,尽管我的 CSS 确实已加载并且没有由于等待 deviceReady 而导致的竞争问题。我可以通过在 javascript 中设置 backgroundColor 轻松解决这个问题,但我想了解这种行为。

CSS

body{
background-color: green;
}

Javascript

    var updateBackground = function() {
        alert(document.body.style.backgroundColor);
        document.body.style.backgroundColor=document.body.style.backgroundColor == '#E4E4E4' ? 'green' :  '#E4E4E4';
    };
class App{
   constructor() {
       this.bindEvents();
   }
   bindEvents() {
       document.addEventListener('deviceready', this.onDeviceReady, false);
   }
   onDeviceReady(){
       document.addEventListener('touchstart', function() {
           updateBackground();
       }, false);
   }
}
var app = new App();

最佳答案

document.body.style.backgroundColor 不会读取您的 css 文件中设置的颜色,只会读取您通过元素上的 style 属性设置的颜色。 getComputedStyle(document.body).getPropertyValue("background-color") 就是你想要的。

<html>
    <head>
        <style>
            body{background-color: green}
        </style>

        <script>
            function getStyle(){
                alert(getComputedStyle(document.body).getPropertyValue('background-color'))
            }
        </script>
    </head>

    <body onload = 'getStyle()'>

    </body>
</html>

关于javascript - 试图根据当前背景更改背景颜色 : background color has no value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30652652/

相关文章:

javascript - 访问段落中特定元素后面的单词

javascript - 是否有任何单一工具可以在给定目录中的文件上运行 JSLint、W3C 验证器(CSS3 和 HTML5)?

css - 如何使用 url() 解决此 Firefox 问题,使其不会在其他浏览器中中断?

html - ID'd div 的 CSS 样式未生效

html - 媒体查询、移动 Img 渲染和 Android CSS 渐变问题

javascript - JQuery 函数不打印任何内容

javascript - 如何使网页变暗并在其上显示另一个网页(附图片)?

javascript - 在 AWS Lambda Javascript 文件中包含 Javascript 引用

javascript - CSS 大小相互依赖和通过 Chrome 中的 JS 调整大小 : possible bug?

javascript - 使用javascript动态更改div标签的位置