Javascript 在id/class css中定义样式时获取/设置元素的样式?
我可能在这里遗漏了一些简单的内容,但我正在尝试获取/设置div的背景色,但前提是已经设置了背景色(无论是来自class/id还是样式属性等) 我尝试过使用Javascript 在id/class css中定义样式时获取/设置元素的样式?,javascript,html,css,Javascript,Html,Css,我可能在这里遗漏了一些简单的内容,但我正在尝试获取/设置div的背景色,但前提是已经设置了背景色(无论是来自class/id还是样式属性等) 我尝试过使用.style.backgroundColor,但它返回的只是一个空字符串(我认为这是因为属性是在类/id中定义的,而不是元素样式本身)。来证明我的意思 我不能使用jQuery,也不能只选择class/id本身的属性,因为我使用的是大量(可能不相关的)元素 最终,目标是实现以下目标: var allElements = document.getE
.style.backgroundColor
,但它返回的只是一个空字符串(我认为这是因为属性是在类/id中定义的,而不是元素样式本身)。来证明我的意思
我不能使用jQuery,也不能只选择class/id本身的属性,因为我使用的是大量(可能不相关的)元素
最终,目标是实现以下目标:
var allElements = document.getElementsByTagName("*");
for (var i = 0; i < allElements.length; i++) {
if (allElements[i].style.backgroundColor != '') {
allElements[i].style.backgroundColor = 'blue';
}
}
var-allegements=document.getElementsByTagName(“*”);
对于(var i=0;i
谢谢 一种方法是使用
getComputedStyle()
函数:
JS:
老实说,这是一种倒退的方式。颜色不是状态,颜色只是应用于状态的样式。因此,应该使用指示状态的类(例如
.active、.error
等)设置颜色,然后检查该特定类是否应用于元素。仔细想想,您可能想知道的是元素是否具有特定的状态。具体的颜色并不重要;这只是那种状态的一种风格,你真的不应该把它和你的逻辑联系在一起。有道理,谢谢。但是,我真的没有设置任何类的选项:\n这是迷你javascript库的一部分,不能使用任何依赖项,应该能够在任何页面上运行。getComputedStyle
仅适用于IE 9及以上版本。@AlexanderDixon Microsoft在2014年4月停止了对XP(因此,IE8)的支持,这已经超过一年了。除非您正在开发某种遗留应用程序,getComputedStyle
polyfill。有很多实现,下面是其中之一:。
var byId = document.getElementById.bind(document);
byId("ending").innerText = "The color is " + getComputedStyle(byId("intro")).backgroundColor + ".";