在尝试div
使用 Javascript 进行基本折叠时,我遇到了以下奇怪的错误;使用此代码:
<html>
<head>
<style type="text/css">
.hidden
{
display: none;
}
</style>
<script type="text/javascript">
function toggle()
{
var element = document.getElementById('hidden1');
if(element.style.display === 'none')
{
element.style.display = 'inline';
}
else
{
element.style.display = 'none';
}
}
</script>
</head>
<body>
<a onclick="toggle()">Click me</a><br />
<div id="hidden1" class="hidden">
stuffs
</div>
</body>
</html>
我曾期望它会像它显示的那样工作:div
将开始隐藏,并且每次单击它都会从可见变为不可见,但事实并非如此:它需要单击 2 次才能第一次显示元素,经过一些调试后我意识到它div
似乎处于某种奇怪的量子通量中。将以下警报添加到toggle()
方法顶部时:
alert('\'' + document.getElementById('hidden1').style.display + '\'');
I'm given ''
,意思是它是空的。但是,当我在完全相同的地方执行此操作时:
console.log(document.getElementById('hidden1').style);
然后控制台显示:
[object CSS2Properties]
具有以下属性:
0: "display"
...
display: "none"
但是,当 CSS 声明.hidden
内联移动到div
'sstyle
时,代码的工作方式与预期完全一样。有谁知道为什么会这样?
我还想知道是否有人无法重现该问题,因为我在 Centos 和 Windows 上的 apache 以及 Firefox 24、Chrome 30 和最新的 Opera 浏览器上都经历过。