javascript - 下拉菜单不在点击事件中切换

标签 javascript html css

这看起来很简单,但我不知道我错过了什么。

我有这个下拉菜单

<div class="col-3">
<div class="dropdown">
  <button onclick=openPayment() class="dropdown__btn"><span class="fas fa-book mr-2"></span>My Lessons<i class=" ml-2 fas fa-caret-down"></i></button>
  <div id="PaymentDropdown" class="dropdown__content">
    <a href="#">Math</a>
    <a href="#">Science</a>
    <a href="#">History</a>
    <a href="#">English</a>
  </div>
</div>

这是该下拉菜单的 css。

 .dropdown{
  position: relative;
  display: inline-block;
}

.dropdown__btn{
  background-color: #3498DB;
  color: white;
  padding: 16px;
  font-size: 16px;
  min-width: 200px;
  border: none;
  cursor: pointer;
}

.dropdown__btn:hover, .dropdown__btn:focus{
  background-color: #2980B9;
}

.dropdown__content{
  display: none;
  background-color: #f1f1f1;
  width: 100%;
  box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
}

.dropdown__content a {
  color: black;
  padding: 12px 16px;
  text-decoration: none;
  display: block;
}

.dropdown__content a:hover {background-color: #ddd}

.show {display:show;}

现在在我的 .dropdown__content 类中,我让它在 css 中不显示 此 div 还与“PaymentDropdown”共享一个 id

我构建了这个函数来切换隐藏菜单的显示和隐藏,但它似乎不起作用。这段代码在 w3 学校遵循相同的实现,所以我不确定我错过了什么。

 function openPayment() {
  document.getElementsByClassName('dropdown__content').classList.toggle("show");
}

最佳答案

  1. getElementsByClassName 返回元素数组,使用索引获取实际 DOM 元素。

  2. display: show 不是有效的 CSS。您可以使用 inline-block、inline、block、table-cell 等...

这是一个工作片段。

function openPayment() {
  var content1 = document.getElementsByClassName('dropdown__content')[0];
  content1.classList.toggle("show");
}
 .dropdown{
  position: relative;
  display: inline-block;
}

.dropdown__btn{
  background-color: #3498DB;
  color: white;
  padding: 16px;
  font-size: 16px;
  min-width: 200px;
  border: none;
  cursor: pointer;
}

.dropdown__btn:hover, .dropdown__btn:focus{
  background-color: #2980B9;
}

.dropdown__content{
  display: none;
  background-color: #f1f1f1;
  width: 100%;
  box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
}

.dropdown__content a {
  color: black;
  padding: 12px 16px;
  text-decoration: none;
  display: block;
}

.dropdown__content a:hover {background-color: #ddd}

.show {display: block;}
<div class="col-3">
<div class="dropdown">
  <button onclick="openPayment()" class="dropdown__btn"><span class="fas fa-book mr-2"></span>My Lessons<i class=" ml-2 fas fa-caret-down"></i></button>
  <div id="PaymentDropdown" class="dropdown__content">
    <a href="#">Math</a>
    <a href="#">Science</a>
    <a href="#">History</a>
    <a href="#">English</a>
  </div>
</div>
 

关于javascript - 下拉菜单不在点击事件中切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49160737/

相关文章:

Android Hybrid App Keyboard/Dropdown popup resize issue for offscreen navigation

javascript - 我正在尝试让我的导航菜单向左滑动并用它插入正文

html - 固定div背景

javascript - 我的提交功能以 Bad Gateway 502 响应

html - 如何让一个 div 停留在页面底部,这样访问者就无法滚动到它?

html - 如何将 Tab 键顺序限制为仅在表单/div 中的控件?

html - 如何在全屏模式下显示自定义视频控件

javascript - React 组件中的可选函数 prop 流类型检查失败

javascript - 如何判断混合数组是否包含字符串元素?

javascript - 流体图像根据屏幕尺寸调整尺寸