gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 15:25:48 25 4
gpt4 key购买 nike

仅当我从 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() 获得的计算样式。 .

通过样式表应用的样式无法通过 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 如所示 here是必要的。


仅供引用,对于您的特定目标,仅在元素上打开/关闭类并将所有样式留给 CSS 可能是一种更好的设计模式,这取决于类名是否存在将特定样式参数放入您的 Javascript 中。

关于javascript - 放置在 head 标签中时无法识别样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26899556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com