为什么我需要检查风格.''首先是在DOM中操作CSS
Why do I need to check for style.element = '' first when manipulating CSS in DOM
每当我尝试在DOM中操作CSS并检查CSS节点是否具有特定值时,如果我实际检查它在CSS文件中分配的值,它将不起作用。相反,我需要首先检查它是否为空值。下面的代码是一个示例:
var nav = document.getElementById('nav');
if(nav.style.backgroundColor == ''){
nav.style.backgroundColor = 'green';
nav.firstChild.nextSibling.style.borderBottom = '2px solid yellow';
}
上面的代码将在
nav.style.backgroundColor == '';
,而不是当我检查它的实际颜色分配在我的css文件。
nav.style.backgroundColor == 'blue';
为什么?我知道浏览器会将HTML文件转换为DOM,但是它不检查css样式吗?
JSFiddle: http://jsfiddle.net/7AX3m/1/
编辑在SO上找到另一个使用getComputedStyle()的链接
链接:getComputedStyle在纯Javascript?
style
属性返回元素的内联样式,您可以通过它修改样式,但它只能帮助您获得内联样式。要在CSS中获得样式(以及所有计算样式),您必须使用getComputedStyle
方法,但是这只返回只读样式:
var style = getComputedStyle(nav);
//then style.backgroundColor would return rgb(0,0,255) which equals to blue
您必须使用以下代码
if(window.getComputedStyle(nav).backgroundColor == 'rgb(0, 0, 255)')
.....
窗口。getComutedStyle文档获取更多信息
- 您使用getComputedStyle来访问活动样式表修改,而nav.style.....访问DOM渲染初始运行时设置的属性。
相关文章:
- 如何修复:当javascript更改DOM时,iOS会删除CSS文件
- CSS 悬停使用 Javascript DOM
- 如何使用jquery动态更改DOM元素CSS类
- css动画没有'不使用新的dom元素
- chrome扩展在加载dom之前注入动态css
- 以非像素为单位获取HTML DOM元素的CSS高度,在我的例子中是英寸
- 如何使用jQuerymobile确保动态DOM元素具有正确的css
- 外部CSS影响(“出血”进入)具有聚合物的阴影DOM
- 使用多个 css 类将 css 转换属性应用于 DOM 对象时遇到问题
- 更好的做法是通过CSS类或直接(通过DOM)修改HTML元素显示
- 在 HTML DOM 元素下添加 javascript 文件或 css 文件
- 为什么我不能检索DOM元素的CSS背景属性
- 如何让导入的 css 字体/图标对影子 dom 中的元素产生影响
- 如何创建一个独立的 DOM 元素?一个不从父母那里继承 css 等
- 通过javascript将CSS样式添加到DOM元素
- 选择 Shadow DOM with JavaScript 和/或 CSS
- 多平台HTML5游戏DOM+CSS与CANVAS与两者
- 通过javascript检索网页的实际DOM/css状态
- 如何在 DOM CSS 中使用变量
- JavaScript/DOM -“CSS选择器”和“CSS选择器”有区别吗?还有一个属性