Javascript で基本的な折りたたみを作成しようとしているdiv
ときに、次の奇妙なバグに遭遇しました。このコードで:
<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
.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
style
また、Centos と Windows の両方で apache を使用し、Firefox 24、Chrome 30、および最新の Opera ブラウザーで問題を再現できない人がいるかどうかも知りたいです。