javascript - 如何单击一次以运行功能?
问题描述
我希望我的函数(dropFunction(),它使 div #dropdownList 出现)在第一次单击我的按钮(#drop-btn)时运行,但是,我必须单击它两次才能运行该函数,但只有第一次时间。第一次双击后,它会正常运行。我如何使它在第一次点击时运行,而不是第一次点击第二次?CSS:
function dropFunction() {
var x = document.getElementById("dropdownList")
if (x.style.display === "none") {
x.style.display = "block"
} else {
x.style.display = "none"
}
}
#dropdownList {
display:none;
}
<div class="dropdown">
<button onclick = "dropFunction()" class="drop-btn">Menu</button>
<div id="dropdownList">
<a href="#">Link 1</a>
<a href="#">Link 2</a>
<a href="#">Link 3</a>
</div>
</div>
解决方案
您必须使用window.getComputedStyle(x)
从 CSS 中获取值
function dropFunction() {
var x = document.getElementById("dropdownList")
if (window.getComputedStyle(x).display === "none") {
x.style.display = "block"
} else {
x.style.display = "none"
}
}
#dropdownList {
display:none;
}
<div class="dropdown">
<button onclick = "dropFunction()" class="drop-btn">Menu</button>
<div id="dropdownList">
<a href="#">Link 1</a>
<a href="#">Link 2</a>
<a href="#">Link 3</a>
</div>
</div>
推荐阅读
- go - 服务器或客户端如何知道连接是否断开?
- python - 在 Python 中将“2019-03-15T21:30:00Z”之类的字符串转换为一年
- redis - NestJS 微服务 - Redis - 未连接
- amazon-web-services - 如何使用 SNS 触发 lambda 函数?
- flutter - Shift+Tab 和箭头(也是 D-PAD)键不适用于 TextFormField 的焦点遍历
- python - 将列从一个 csv 文件移动到另一个文件并将其值移动到 ID 匹配的位置
- python - 如何计算熊猫的条件?
- javascript - 带有远程存储的 ExtJS 6 过滤器组合框下拉菜单
- python - 如何复制 polyfit 线以识别数据末端
- html - div 相互重叠,z-index 不起作用