javascript - 使用 vanilla Javascript 制作下拉菜单
问题描述
我试图弄清楚什么是完成下拉菜单的好方法,该下拉菜单在用户单击div
用作按钮时打开并在用户再次单击时隐藏。我的 CSS 表中的样式设置为display: none
. 这就是我所经历的:
var xx = document.getElementById('dropdown-Container');
if (xx.display.style = 'none') {
xx.addEventListener('click', function showMenu() {
document.getElementById('dropdown-Container').style.display = 'block';
} else {
xx.style.display = 'none';
}, false);
}
<div type="button" id="dropdown-Container">
<a class="dropdown1" href="#">Link 1</a>
<a class="dropdown1" href="#">Link 2</a>
<a class="dropdown1" href="#">Link 3</a>
</div>
<a href="#contact">Search</a>
</div>
菜单已正确隐藏,但是当用户单击它时,它并没有像我希望的那样打开。
解决方案
通过将 if 语句放在事件侦听器上方,您在代码中犯了一个错误。像这样使用它。
var menu = document.getElementById('yourDropdownMenuIdHere');
var dropdown = document.getElementById('dropdown-Container');
menu.addEventListener('click', function showMenu(){
if( dropdown.style.display = 'none' ) {
dropdown.style.display = 'block';
} else {
dropdown.style.display = 'none';
}
});
可访问性问题:不应将 div 用作处理点击的按钮。您可以改用按钮标签
推荐阅读
- google-speech-api - 如何提高 Google Speech to Text API 中的标点和类标记的准确性
- angular - 在规范文件中运行多个测试时发出清理组件角度
- typescript - 打字稿和 Firebase 9
- javascript - 元素 scrollIntoView 在 Safari 中不起作用
- android - 如何在没有任何密码的情况下在 Flutter 中解密和删除 pdf 的有限权限?
- javascript - 如何创建以下样式的按钮?
- python - 如何在 Matplotlib 中打印带有标题的图像?
- excel - 在 Visual Basic for Excel 中使用字符串文本作为代码
- c# - 正则表达式匹配字母数字,除了特定的子字符串
- javascript - 如何使用带有 CORS 或 API 凭据的 javascript 从 Google Drive 共享 mp3 文件