javascript - 如何使用 javascript 更改 CSS style.display
问题描述
在我的网页中,菜单的结构如下:
<nav id="menu">
<label for="tm" id="toggle-menu">Menù <span class="drop-icon">▾</span></label>
<input type="checkbox" id="tm">
<ul class="main-menu clearfix">
<li><a href="http://www.internalsite.lab/">Home</a></li>
<li><a href="#">Transfer
<span class="drop-icon">▾</span>
<label title="Toggle Drop-down" class="drop-icon" for="sm1">▾</label>
</a>
<input type="checkbox" id="sm1">
<ul class="sub-menu">
<li><a href="data.html">internal data</a></li>
<li><a href="data_ext.html">external data</a></li>
</ul>
</li>
<li class="imp"><a href="necessary.html">Necessary Data</a></li>
</ul>
</nav>
和这样的CSS:
#menu .main-menu {
display: block;
}
#menu li,
#toggle-menu,
#menu a {
position: relative;
display: block;
color: white;
text-transform: capitalize;
text-shadow: 1px 1px 0 rgba(0, 0, 0, .125);
}
#menu .main-menu li.imp{
display: none;
}
#menu .main-menu li{
background-color: #197dd1;
font-weight: bold;
}
如果发生某种情况,我想将 #menu .main-menu li.imp 的显示更改为块,因此我有一个这样的 js 代码
<script "application/javascript">
var javaScriptVar = "<?php echo $value; ?>";
if( value== "true") { document.getElementsByClassName('imp').style.display = 'block';}
</script>
我确信该值等于 true,但它不起作用。
任何想法?非常感谢
解决方案
问题是函数getElements ByClassName,它返回一个节点列表/ HtmlCollections,你必须迭代节点。强文本
例如,元素的 id 是唯一的,并且您使用getElement Byid 这将返回一个公正的节点。
你可以尝试:
document.querySelectorAll('.imp').forEach(function(e) {
e.style.display = 'none'
})
推荐阅读
- mysql - 获取预订的下一个可用性
- c# - 如何将 ASP.NET MVC 视图作为 NuGet 包分发
- glassfish - glassfish 在 iis 上获取 shibboleth sp 属性
- java - FutureTask 的两种用法有什么区别?
- javascript - Vue js 在模板中使用 v-for 循环通过对象
- google-bigquery - 我需要更正拼写错误,但 UPDATE 给出了 DML 错误
- cloudera-cdh - 将 hive 表导出到 mysql 时 sqoop1 挂断
- azure - Azure Monitor - 创建新订阅时如何创建警报?
- matlab - Matlab - 绘制特定像素(图像处理)
- c# - 登录后显示用户名不起作用