javascript - 为什么在 DOM 中操作 CSS 时需要先检查 style.element = ''

标签 javascript css

每当我尝试在 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 in pure Javascript?

最佳答案

style 属性返回元素的内联样式,您可以通过它修改样式,但它只能帮助您获得内联样式。要在 CSS 中获取样式(以及所有计算样式),您必须使用 getComputedStyle 方法,但这只返回只读样式:

var style = getComputedStyle(nav);
//then style.backgroundColor would return rgb(0,0,255) which equals to blue

关于javascript - 为什么在 DOM 中操作 CSS 时需要先检查 style.element = '',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24468266/

相关文章:

javascript - 如何将文本放在与您按下的选项卡链接的选项卡标题下?

html - 自定义响应网格列大小不正确大小

javascript - 拆分字符串并将所有值传递给函数

javascript - 更改 Google map 中的颜色(自定义)

javascript - 如何获得相对于 HTML 中祖 parent 元素的偏移量?

javascript - 使用CanvasRenderingContext2D的drawImage方法时出现类型错误(纯Javascript)

css - 在td上显示左上角的图标

html - 骨架网格系统 : make container 100%

javascript - 不向从 javascript Date 创建的对象添加分钟的时刻

javascript - 原始 HTML 上的正则表达式