javascript - HTML/JavaScript 禁用元素
问题描述
我的网站上有一个下拉导航
<ul>
<li><a href="index.html">Homepage</a></li>
<li><a href="#">Forum</a></li>
<div class="dropdown">
<button onclick="mainDropdown()" class="mainDropdown">Videos</button>
<ul class="dropdownList" id="dropdownList">
<button id="intro">Introduction</button>
<button id="start">Getting Started</button>
</ul>
</div>
<li class="test"><a href="index.html">Contact</a></li>
</ul>
我在我的 html 中有这个,可以忽略所有内容的 UL,因为这不是问题的一部分,前两个 LI 也不是
我遇到的问题是下拉部门。
function mainDropdown() {
var dropdown = document.getElementById("dropdownList");
dropdown.classList.toggle("active");
if(dropdown.classList.contains("active")) {
document.getElementById("intro").style.display = "block";
document.getElementById("start").style.display = "block";
} else if(!dropdown.classList.contains("active")) {
setTimeout(() => {
document.getElementById("intro").style.display = "none";
document.getElementById("start").style.display = "none";
}, 300);
}
}
这是javascript方法(香草,试图在这个项目中不使用JQuery,就像提醒一样)。这很好用 - 但是,我正在寻找一种更好的方法来做到这一点。因为当我开始添加更多部分时,javascript 方法会变得相当冗长。
有没有一种方法可以用来获取 dropdownList UL 的子项,以便我可以遍历它们并设置它们的显示?而不是添加一堆相同的行。
解决方案
有没有一种方法可以用来获取 dropdownList UL 的子项,以便我可以遍历它们并设置它们的显示?
您可以通过 获取项目列表querySelectorAll('#dropdownList > *')
。
或者您可以使用 css 选择器来切换显示:
#dropdownList {
display: none;
}
#dropdownList.active {
display: block;
}
或者,如果您出于某种原因需要执行个别项目:
#dropdownList > * {
display: none;
}
#dropdownList.active > * {
display: block;
}
推荐阅读
- javascript - 如何从表单中查看发布请求的位置?
- node.js - 猫鼬查询没有被执行
- google-chrome - 在网页上的 chrome 扩展中添加右键单击选项
- python - 如何分析扬声器音频输出以进行频率分析?蟒蛇 3.6
- excel - 将具有多列的列表框中的多选项目添加到 Excel 工作表
- php - 如何使用冒号“:”获取我的 wordpress 网站 url ..?
- javascript - 如何获取道路/街道名称而不是州路线?
- ignite - 如何更改 Apache Ignite 的 REST API 端口?
- java - 创建像 Spring DataSourceBuilder 一样工作的自定义构建器?
- android - Chrome 更新后未加载 Android 9 WebView(也是 admob 广告)