我想更改图标,即根据下拉菜单是否关闭来更改箭头.当下拉菜单关闭时,我希望箭头向下,当它打开时,我希望箭头向上.因为我有多个下拉菜单,我该如何解决这个问题?

我希望该操作是用JavaScript编写的.

const dropdownBtn = document.querySelectorAll('.b-footerMobile__item');
const dropdown = document.querySelectorAll('.b-footerMobile__dropdown');
const up = document.querySelectorAll('.b-footerMobile__up');
const down = document.querySelectorAll('.b-footerMobile__down');


dropdownBtn.forEach((btn)=>{
    btn.addEventListener('click',(e) =>{
        const target = e.currentTarget.dataset.dropdown;
        const current = document.getElementById(target);

        current.classList.toggle('active');
        dropdown.forEach((drop) =>{
            if(drop.id !== target){
                drop.classList.remove('active');
            }
        });
    })
})
.b-footerMobile__dropdown {
  display: none;
}
.b-footerMobile__dropdown.active {
  display: flex;
  flex-direction: column;
  align-items: center;
  background-color: #414141;
  width: 100%;
  padding: 1px 0;
  height: 90%;
}
.b-footerMobile__up {
  display: none;
}
.b-footerMobile__up.active {
  display: block;
}
.b-footerMobile__down {
  display: block;
}
.b-footerMobile__down.active {
  display: none;
}
<div class="b-footerMobile__menu">
    <div class="b-footerMobile__item" data-dropdown="dropdown1">
        <h2 class="b-footerMobile__title">Drop1</h2>
        <div class="bla">
            <img src="./images/arrow-down-mobile.svg" alt="arrow-down"
                class="b-footerMobile__arrow b-footerMobile__down">
            <img src="./images/arrow-up-mobile.svg" alt="arrow-down"
                class="b-footerMobile__arrow b-footerMobile__up">
        </div>
    </div>
    <div class="b-footerMobile__dropdown" id="dropdown1">
        <div class="b-footerMobile__li">
            <p class="b-footer__p">1</p>
        </div>
        <div class="b-footerMobile__li">
            <p class="b-footer__p">2</p>
        </div>
        <div class="b-footerMobile__li">
            <p class="b-footer__p">3</p>
        </div>
    </div>
</div>

<div class="b-footerMobile__item" data-dropdown="dropdown2">
    <h2 class="b-footerMobile__title">Drop2</h2>
    <div class="bla">
        <img src="./images/arrow-down-mobile.svg" alt="arrow-down"
            class="b-footerMobile__arrow b-footerMobile__down">
        <img src="./images/arrow-up-mobile.svg" alt="arrow-down"
            class="b-footerMobile__arrow b-footerMobile__up">
        </div>
    </div>
    <div class="b-footerMobile__dropdown" id="dropdown2">
        <div class="b-footerMobile__li">
            <p class="b-footer__p">1</p>
        </div>
        <div class="b-footerMobile__li">
            <p class="b-footer__p">2</p>
        </div>
        <div class="b-footerMobile__li">
            <p class="b-footer__p">3</p>
        </div>
                          
    </div>
</div>

推荐答案

据我所知,你想做这样的事情:

const dropdownBtn = document.querySelectorAll('.b-footerMobile__item');
const dropdown = document.querySelectorAll('.b-footerMobile__dropdown');
const up = document.querySelectorAll('.b-footerMobile__up');
const down = document.querySelectorAll('.b-footerMobile__down');

dropdownBtn.forEach((btn) => {
  btn.addEventListener('click', (e) => {
    const target = e.currentTarget.dataset.dropdown;
    const current = document.getElementById(target);

        e.currentTarget.querySelector('.bla').classList.toggle('active');
        
    current.classList.toggle('active');
    dropdown.forEach((drop) => {
      if (drop.id !== target) {
        drop.classList.remove('active');
      }

    });
  })
})
.b-footerMobile__dropdown {
  display: none;
}
.b-footerMobile__dropdown.active {
  display: flex;
  flex-direction: column;
  align-items: center;
  background-color: #414141;
  width: 100%;
  padding: 1px 0;
  height: 90%;
}

.b-footerMobile__up {
  display: none;
}

.b-footerMobile__up.active {
  display: block;
}

.b-footerMobile__down {
  display: block;
}
.b-footerMobile__up {
  display: none;
}
.active .b-footerMobile__down {
  display: none;
}
.active .b-footerMobile__up {
  display: block;
}
<div class="b-footerMobile__item" data-dropdown="dropdown1">
    <h2 class="b-footerMobile__title">Drop1</h2>
    <div class="bla">
        <img src="./images/arrow-down-mobile.svg" alt="arrow-down" class="b-footerMobile__arrow b-footerMobile__down">
        <img src="./images/arrow-up-mobile.svg" alt="arrow-up" class="b-footerMobile__arrow b-footerMobile__up">
    </div>
</div>
<div class="b-footerMobile__dropdown" id="dropdown1">
    <div class="b-footerMobile__li">
        <p class="b-footer__p">1</p>
    </div>
    <div class="b-footerMobile__li">
        <p class="b-footer__p">2</p>
    </div>
    <div class="b-footerMobile__li">
        <p class="b-footer__p">3</p>
    </div>
</div>
<div class="b-footerMobile__item" data-dropdown="dropdown2">
    <h2 class="b-footerMobile__title">Drop2</h2>
    <div class="bla">
        <img src="./images/arrow-down-mobile.svg" alt="arrow-down" class="b-footerMobile__arrow b-footerMobile__down">
        <img src="./images/arrow-up-mobile.svg" alt="arrow-up" class="b-footerMobile__arrow b-footerMobile__up">
    </div>
</div>
<div class="b-footerMobile__dropdown" id="dropdown2">
    <div class="b-footerMobile__li">
        <p class="b-footer__p">1</p>
    </div>
    <div class="b-footerMobile__li">
        <p class="b-footer__p">2</p>
    </div>
    <div class="b-footerMobile__li">
        <p class="b-footer__p">3</p>
    </div>
</div>

Javascript相关问答推荐

通过实现regex逻辑自定义数据表搜索

创建1:1比例元素,以另一个元素为中心

JS、C++和C#给出不同的Base 64 Guid编码结果

如何修复循环HTML元素附加函数中的问题?

在贝塞尔曲线的直线上找不到交叉点:(使用@Pomax的bezier.js)

Angular中计算信号和getter的区别

JQuery. show()工作,但. hide()不工作

如何修复我的js构建表每当我添加一个额外的列作为它的第一列?

PrivateRoute不是路由组件错误

构造HTML表单以使用表单数据创建对象数组

setcallback是什么时候放到macrotask队列上的?

如何将Openjphjs与next.js一起使用?

是什么导致了这种奇怪的水平间距错误(?)当通过JavaScript将列表项元素追加到无序列表时,是否在按钮之间?

WP Bootstrap NavWaker:下拉菜单一次打开所有下拉菜单

如何将zoom 变换应用到我的d3力有向图?

面对代码中的错误作为前端与后端的集成

我在哪里添加过滤器值到这个函数?

Promise.race()返回已解析的promise ,而不是第一个被拒绝的promise

将以前缓存的 Select 器与querySelector()一起使用

如何创建一个for循环,用于计算仪器刻度长度并将其放入一个HTML表中?