繁体   English   中英

放置在head标签中时无法识别样式

[英]style not recognized when placed in the head tag

仅当我从head标记中删除h1的样式并使用内嵌样式(如注释行中所示)时,以下代码才有效,但不能按以下列出的方式起作用。

<!DOCTYPE html>
<html>
    <head>
        <style>
            h1 {
                text-align: center; 
                color: black;
            }
        </style>
        <script>
            function changeColor()
            {
                var dom = document.getElementById("head1"); 
                var clr = dom.style.color;
                switch(clr)
                {
                    case 'black':
                        dom.style.color = "red";
                        break;
                    case 'red':
                        dom.style.color = "black";
                        break;
                }
            }
        </script>
    </head>
    <body onclick="changeColor()">
        <!-- <h1 id="head1" style="text-align: center; color: black;">CLICK ON ME!</h1> -->
        <h1 id="head1">CLICK ON ME!</h1>
    </body>
</html>

非常感谢您的帮助。

如果要从样式表中读取元素的样式,则必须使用可以通过window.getComputedStyle()获得的计算样式。

通过stylesheeets应用的样式无法通过elem.style读取。 这仅显示直接应用于该特定元素的样式(不继承自样式表或父样式)。

您可以像这样更改代码,然后除了直接应用值之外,还可以使用样式表值:

        function changeColor()
        {
            var dom = document.getElementById("head1"); 
            var clr = getComputedStyle(dom, null).getPropertyValue("color");
            switch(clr)
            {
                case 'black':
                    dom.style.color = "red";
                    break;
                case 'red':
                    dom.style.color = "black";
                    break;
            }
        }

注意: getComputedStyle()需要IE9或更高版本。 IE8和更早版本执行相同操作的方式不同,因此,在支持IE的较早版本时,必须使用此处所示的某种形式的polyfill。


仅供参考,对于您在此处的特定目标,可能是更好的设计模式,即仅在元素上打开/关闭类,然后根据是否存在类名而不放特定样式将所有样式留给CSS JavaScript中的参数。

内联attr的默认值为“”,这是伪造的值。 因此,您需要一个默认值。

switch(clr) {
    case 'black':
        dom.style.color = "red";
        break;
    case 'red':
        dom.style.color = "black";
        break;
    default:
        dom.style.color = "red";

}

或者如果您通过添加和删除类来避免具有1000值的样式属性的特殊性,这样做可能会更清洁

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM