为了账号安全,请及时绑定邮箱和手机立即绑定

如何为多个实例优化 querySelectorAll

如何为多个实例优化 querySelectorAll

九州编程 2023-04-27 16:40:21
我有以下有效的 ecmascript,但如果可能的话,我宁愿将其减少到一行,或者只是下一个最好的东西,而不是多次编写 querySelectorAll。我该如何利用这一点?    document.querySelectorAll('main .testimonials ul.shadow-box')[2].classList.remove('shadow-box');    document.querySelectorAll('main .testimonials ul.shadow-box')[1].classList.remove('shadow-box');    document.querySelectorAll('main .testimonials ul.shadow-box')[0].classList.remove('shadow-box');
查看完整描述

2 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

您可以使用forEach()只执行一次查询,然后遍历结果。


document.querySelectorAll('main .testimonials ul.shadow-box').forEach(function(el) {

  el.classList.remove('shadow-box');

});

ul {

  background: red;

  min-height: 20px;

}


.shadow-box {

  background: blue;

}

<main>

  <div class="testimonials">

    <ul class="shadow-box"></ul>

    <ul class="shadow-box"></ul>

    <ul class="shadow-box"></ul>

    <ul class="shadow-box"></ul>

  </div>

</main>


查看完整回答
反对 回复 2023-04-27
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

您可以创建一个数组,然后slice创建它,然后循环遍历它。


[...document.querySelectorAll('main .testimonials ul.shadow-box')]

   .slice(0, 3)

   .forEach(x => x.classList.remove('shadow-box'));


查看完整回答
反对 回复 2023-04-27
  • 2 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信