javascript - myDiv.style.display 在主样式表中设置时返回空白

标签 javascript css

简短版本: myDiv.style.display (Javascript) 在我将 div 设置为 display:none 在主样式表中,但在通过内联样式设置时返回“无”?

长版:

我有一些 div,我通过它们的 display 样式隐藏和取消隐藏,用 Javascript 在 blocknone 之间切换。它们总是从隐藏的 (display:none) 开始,我一直在这样设置内联样式:

<div id="anID" class="aClass" style="display:none">
   stuff
</div>

这是在 noneblock 之间切换的 Javascript。这两个 chOpsXXX() 函数只是将 divSection.style.display 设置为相反的值(连同其他内务处理):

var divSection = document.getElementById("chOpsSection" + strSectionID);
var strDisplay = divSection.style.display;
if (strDisplay == "none") {
    chOpsDisplaySection(strSectionID);
} else {
    chOpsHideSection(strSectionID);
}

当我使用内联样式属性设置初始 display:none 样式时,一切正常。

我还在主样式表中为这些 div 设置其他样式。所以我决定将 display:none 的初始状态移动到所述样式表可能是有意义的。我这样做了。我不会发布它,我想你可以想象一下。

但是当我这样做时,div 最初是隐藏的(display:none),但是第一次调用 divSection.style.display 返回一个空字符串(alert(strDisplay); 返回一个空字符串,而不是 null)。

我上面显示的 Javascript 然后隐藏它(因为它不等于“无”),然后 next 调用 divSection.style.display 返回“none”从那里一切正常。 (如果我在主样式表中将它设置为 inline,则行为相同:div 最初是可见的,并且第一次调用 divSection.style.display 返回一个空字符串)。

通过检查上面我的 Javascript 中的“无”和“”,这很容易修复。但我想知道从 divSection.style.display 返回空白字符串是否是标准行为。

欢迎所有回复。

最佳答案

如果您通过 JS 访问 DOM 元素(例如使用 getElementById),您将无法读取该元素的计算样式,因为它是在 CSS 文件中定义。为避免这种情况,您必须使用属性 getComputedStyle(或 IE 的 currentStyle)。

function getStyle(id, name)
{
    var element = document.getElementById(id);
    return element.currentStyle ? element.currentStyle[name] : window.getComputedStyle ? window.getComputedStyle(element, null).getPropertyValue(name) : null;
}

用法(JSFiddle):

var display = getStyle('myDiv', 'display');
alert(display); //will print 'none' or 'block' or 'inline' etc

关于javascript - myDiv.style.display 在主样式表中设置时返回空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16748813/

相关文章:

asp.net - 禁用按钮在 Mozilla 中看起来未禁用的问题

javascript - LG webOS 回归事件

javascript - 如何将这两个日期放在一起?

html - 如何构建此 HTML 以将内容置于 div 中

Jquery 无法识别变量

html - 无法弄清楚为什么我的 CSS 不会显示在我的 Chrome 浏览器中

带有字符串和整数的 Javascript 警报语句

javascript - Threejs 更改网格颜色无法被识别

javascript - 使用 firebase 创建用户时设置显示名称

html - CSS类显示