javascript - element.style.display 不是在浏览器中呈现的内容

标签 javascript html css

可能是一个重复的问题,但找不到答案。

element.style.display 不是在浏览器中呈现的内容。

它不返回实际值(即 block 或内联等),而是返回空值。在 Chrome 56.0.2924.87(64 位)中测试。

如何获取实际呈现的值?

function displayStyle(aEvent) {
aEvent.target.textContent=aEvent.target.style.display;
}
window.onload = function() { 
var  top_array = document.getElementsByClassName("top");
for(var i = 0; i <  top_array.length; i++)
{
   top_array[i].addEventListener("click", displayStyle, false);
}
}
.top{
background-color:#FFF8DC;
}
<div class="top">top (click it and it will disappear because its style.display is empty)</div>

最佳答案

CSS 样式对 JavaScript 不可用,除非它们之前已在 JavaScript 中设置或已被硬编码为内联样式。

使用 getComputedStyle() 改为:

function displayStyle(aEvent) {
  var target = aEvent.target;
  target.textContent = window.getComputedStyle(target).getPropertyValue('display');
}

window.onload = function() {
  var top_array = document.getElementsByClassName("top");
  for (var i = 0; i < top_array.length; i++) {
    top_array[i].addEventListener("click", displayStyle, false);
  }
}
.top {
  background-color: #FFF8DC;
}
<div class="top">top (click it and it will now show "block" since we're getting its computed style.)</div>

关于javascript - element.style.display 不是在浏览器中呈现的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43124847/

相关文章:

javascript - 在按下键时恢复为未悬停的 css

javascript - 如何使用 JavaScript 检测元素重叠(重叠)?

html - IE8透明div在图像上

jquery - 如何使用jquery在html中将div从一个位置更改为另一个位置

javascript - 让 ForEach 在每个循环之前完成

javascript - 绑定(bind)在运行时 View 模型中修改

javascript - 使用 superagent-cache 缓存不同参数的 HTTP 响应

javascript - 使一个 div 在焦点上 float 到另一个 div 的左侧

javascript - 未捕获的类型错误 : cannot set property 'display' of undefined

html - 可以在 CSS 中使用百分比指定页面的某些部分吗?