javascript - 单击下拉菜单时向下拉菜单添加和删除类
问题描述
正如标题所述,我试图在单击并“打开”时将一个类添加到下拉菜单中,并在下拉菜单关闭后删除相同的类。我的代码在单击/打开下拉菜单时添加了该类,但是当下拉菜单关闭时它不会将其删除。
到目前为止,这是我的代码:
<html>
<head>
</head>
<body>
<div class="dropdown" id="dropDownDiv">
<button class="btn btn-secondary dropdown-toggle dropdownButton" type="button"
id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"
onclick="inputEffect()">
<span class="dropdownText" id="dropText">Vælg mærke</span><i
class="fas fa-chevron-down fasDropDown"></i>
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</div>
</body>
</html>
<script>
function inputEffect() {
var button = document.getElementById("dropdownMenuButton");
var element = document.getElementById("dropText");
if(button.hasAttribute("aria-expanded", "true")) {
element.classList.add("myEffect");
}
}
</script>
<style>
.myEffect {
position: absolute;
left: 11% !important;
top: -35% !important;
background-color: white;
color: #3faf8f;
}
</style>
解决方案
该hasAttribute()
方法只有一个参数。我想你想取而代之的是检索属性值。你可以使用getAttribute()
它。
function inputEffect() {
var button = document.getElementById("dropdownMenuButton");
var element = document.getElementById("dropText");
if (button.getAttribute("aria-expanded") === true) {
element.classList.add("myEffect");
} else {
element.classList.remove("myEffect");
}
}
您还可以使用classList.toggle(<class>)
to 避免if
完全编写语句,而不是使用classList.add()
.
推荐阅读
- javascript - 特定行的Angular 2+禁用按钮
- sql - T-SQL: why sp_executesql requires it's parameters types?
- python - discord.py:交替“播放”状态不起作用,命令被禁用
- html - 按百分比更改图像高度不起作用
- math - 在网格螺旋上返回 X 或 Y 的公式,但只有方向改变?
- java - 为什么子方法在主方法中找不到符号?
- php - 无法接收从 Vue 通过 axios 发送到 PHP 的 Post 数据
- vb.net - 将未过滤的文本放入文本框中
- sharepoint - 如何根据文件名获取文档库中新上传文件的ID?PNP JS
- node.js - 如何将字符串添加到集合中的数组 | MongoDB | 节点JS