[英]HTML element displays when set to display: none in CSS
我有一个div
元素,应该设置为display: none
默认情况下display: none
,但不是。 就像整个.css语句被忽略了一样。
我有3个档案。
index.html
,这是我所有按钮和元素所在的位置。 main.js
,这是切换选项卡(我正在尝试创建一个偶像游戏)的功能所在的位置。 style.css
,这是一小部分CSS所在的位置。 我尝试将css包含在主要index.html
,我尝试使用<style>
和</style>
标记包围我的css,但它仍然不起作用。 我的css文件看起来像这样:
.hide {
display: none;
}
我的include语句如下所示:
<head>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
我的div元素如下所示:
<div id="ees" class="hide">
<h3>Events</h3>
<span id="log">No events have occured yet</span>
</div>
我的用于切换标签的JS函数如下所示:
function toggle_tab(tabname) {
if(document.getElementById(tabname).style.display == "none")
document.getElementById(tabname).style.display = "block";
else
document.getElementById(tabname).style.display = "none";
}
我触发事件的按钮如下所示:
<button onclick="toggle_tab('ees');">Events</button>
运行代码时的结果很奇怪。 该按钮仅在按两次而不是按一次后才起作用(请记住,默认情况下应将其设置为none,按一次则应显示其内容)。 之后,它可以正常工作,但是您需要在页面加载时按两次,这是一个问题。 我将此添加到函数中以查看发生了什么,结果如下:
function toggle_tab(tabname) {
console.log("Display: "+document.getElementById(tabname).style.display);
if(document.getElementById(tabname).style.display == "none")
document.getElementById(tabname).style.display = "block";
else
document.getElementById(tabname).style.display = "none";
}
这是页面加载时首次触发按钮时的输出外观。
显示:
而已。 就像display: none
在我的CSS类定义中display: none
被忽略。 我想要的是控制台display: none
页面加载时display: none
。 这也会在有人第一次选择激活按钮时显示按钮的内容,因为在交互开始时默认值将为none。
您最初是通过CSS类hide
来设置div
元素的CSS display
属性。 但是,当您检查它是否隐藏时,您正在查看的是div
元素的style属性的display
属性,这与检查CSS类不同。 div
获取display: none
CSS类hide
display: none
设置,但是在其自己的style属性中没有该设置。
由于您直接设置了div
的display
属性,因此在第一次之后它就可以工作,然后您的测试就可以了。
如果加载页面,请打开JavaScript控制台,然后输入:
document.getElementById('ees').style.display
您会看到它的结果为空字符串,而不是“ none”。
您可能想做的是切换元素的hide
类,而不是切换其自身样式的display
属性。
隐藏元素:
document.getElementById('ees').className = 'hide'
再次显示:
document.getElementById('ees').className = ''
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.