首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用querySelector引用div

使用querySelector引用div
EN

Stack Overflow用户
提问于 2021-04-10 04:14:27
回答 4查看 46关注 0票数 1

我想在事件click中引用一个按钮,以访问dropdown Content目录上的a标记,并将显示设置为block。我该怎么做呢?

代码语言:javascript
复制
const dropdownBtn = document.querySelectorAll('.dropdownBtn')
for (const button of dropdownBtn) {
  button.addEventListener('click', (e) => {
    const links = document.querySelectorAll(`.${button} + .dropdownContent a`)
    links.forEach(link => link.style.display = 'block')
  })
}
代码语言:javascript
复制
<div class="menu">
  <div class=dropdown>
    <button class='dropdownBtn'>Button1</button>
    <div class="dropdownContent">
      <a href="#">Test1</a>
      <a href="#">Test2</a>
      <a href="#">Test3</a>
    </div>
  </div>

  <div class=dropdown>
    <button class='dropdownBtn'>Button2</button>
    <div class="dropdownContent">
      <a href="#">Test1</a>
      <a href="#">Test2</a>
      <a href="#">Test3</a>
    </div>
  </div>
</div>

谢谢你的帮助。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-04-10 04:52:41

看这段代码,我想你的意思是选择下一个兄弟

代码语言:javascript
复制
const links = document.querySelectorAll(`.${button} + .dropdownContent a`)

除了使用+,您还可以使用

代码语言:javascript
复制
const links = button.nextElementSibling.querySelectorAll(".dropdownContent a")

例如,无需创建额外的links变量:

代码语言:javascript
复制
const dropdownBtn = document.querySelectorAll('.dropdownBtn')
for (const button of dropdownBtn) {
  button.addEventListener('click', (e) => {
    button.nextElementSibling.querySelectorAll(".dropdownContent a")
      .forEach(link => link.style.display = 'block')
  })
}
代码语言:javascript
复制
<div class="menu">
  <div class=dropdown>
    <button class='dropdownBtn'>Button1</button>
    <div class="dropdownContent">
      <a href="#">Test1</a>
      <a href="#">Test2</a>
      <a href="#">Test3</a>
    </div>
  </div>

  <div class=dropdown>
    <button class='dropdownBtn'>Button2</button>
    <div class="dropdownContent">
      <a href="#">Test1</a>
      <a href="#">Test2</a>
      <a href="#">Test3</a>
    </div>
  </div>
</div>

票数 0
EN

Stack Overflow用户

发布于 2021-04-10 04:18:27

这会将按钮的下一个同级.dropdownContenta元素设置为block

代码语言:javascript
复制
document.querySelectorAll('.dropdownBtn').forEach((btn) => {
  btn.addEventListener('click', (evt) => {
    const dropdownDiv = evt.target.nextElementSibling;
    for (let i = 0; i < dropdownDiv.children.length; i++) {
      dropdownDiv.children[i].style.display = 'block';
    }
  });
});

代码语言:javascript
复制
document.querySelectorAll('.dropdownBtn').forEach((btn) => {
  btn.addEventListener('click', (evt) => {
    const dropdownDiv = evt.target.nextElementSibling;
    for (let i = 0; i < dropdownDiv.children.length; i++) {
      dropdownDiv.children[i].style.display = 'block';
    }
  });
});
代码语言:javascript
复制
<div class="menu">
  <div class=dropdown>
    <button class='dropdownBtn'>Button1</button>
    <div class="dropdownContent">
      <a href="#">Test1</a>
      <a href="#">Test2</a>
      <a href="#">Test3</a>
    </div>
  </div>

  <div class=dropdown>
    <button class='dropdownBtn'>Button2</button>
    <div class="dropdownContent">
      <a href="#">Test1</a>
      <a href="#">Test2</a>
      <a href="#">Test3</a>
    </div>
  </div>
</div>
<div>
  <ul id="test">
  </ul>
</div>

票数 0
EN

Stack Overflow用户

发布于 2021-04-10 04:34:14

如果我没理解错的话,这可以通过获取当前Button的父元素,然后只查询它的子元素来实现。

我是这样做的:

代码语言:javascript
复制
const dropdownBtn = document.querySelectorAll('.dropdownBtn')
for (const button of dropdownBtn) {
  button.addEventListener('click', (e) => {
    const links = button.parentElement.querySelectorAll(`.dropdownContent a`)
    links.forEach(link => link.style.display = 'block')
  })
}
代码语言:javascript
复制
<div class="menu">
  <div class=dropdown>
    <button class='dropdownBtn'>Button1</button>
    <div class="dropdownContent">
      <a href="#">Test1</a>
      <a href="#">Test2</a>
      <a href="#">Test3</a>
    </div>
  </div>

  <div class=dropdown>
    <button class='dropdownBtn'>Button2</button>
    <div class="dropdownContent">
      <a href="#">Test1</a>
      <a href="#">Test2</a>
      <a href="#">Test3</a>
    </div>
  </div>
</div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67027738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档