【问题标题】:Can't get display attribute [duplicate]无法获取显示属性[重复]
【发布时间】:2014-07-27 14:59:33
【问题描述】:

我正在尝试使用style.display 获取有关元素的display 属性。但它没有返回任何东西。 看看 JsFiddle 一个。

http://jsfiddle.net/4v5LS/1/

警报窗口中没有任何内容。

更新

现在我注意到了一些不寻常的事情。每当我内联定义属性时,事情就会起作用。但是当我以任何其他方法应用样式时,它就不起作用了。

【问题讨论】:

  • style.display 属性返回直接在元素上设置的值,而不是继承(或计算)的值。
  • box div 不在任何其他 div 中。我在 CSS 中指定了 display。那么这里要计算什么?我没有掌握这个事实。
  • 元素样式是根据直接在元素上的样式计算的,这些样式是从父元素继承的,以及从 CSS 计算的。样式对象仅保存直接在元素上设置的属性的值。所有其余的(包括来自 CSS 的)都被计算出来。查看标记的重复项。
  • 哦。好的。我现在明白了。非常感谢。这非常有帮助。

标签: javascript dom


【解决方案1】:

您可以使用getComputedStyle()

document.getElementById('button').onclick = function() {
     element = document.getElementById('box');
     style = window.getComputedStyle(element),
     display = style.getPropertyValue('display');
    alert(display);
}

fiddle

【讨论】:

  • 请不要发布仅限代码的答案。解释 OP 做错了什么以及为什么你的答案“有效”。
  • 每次我尝试这样做时,其他用户总是比我更快地发布答案,而我花时间回答 OP 却一无所获;)
  • 没有什么可以阻止您编辑答案以添加更多详细信息。
  • 我发布了我的答案,但在 15 秒后(抱歉记不清了),您因此对我投了反对票。没有时间反应:)。还有一次,当我发布我的答案并开始编辑它以解释为什么我发布代码时,另一个用户指责我编辑了我的第一篇文章,这是不对的:/无论如何,Thx @RobG 我将来会听从你的建议 :)
  • 我没有给你投反对票。如果你编辑你的帖子,任何人都可以删除反对票(如果他们回来......)。
猜你喜欢
  • 2017-04-14
  • 2014-06-10
  • 1970-01-01
  • 2019-04-02
  • 1970-01-01
  • 1970-01-01
  • 2013-10-17
  • 2013-04-05
  • 1970-01-01
相关资源
最近更新 更多