单击另一个元素后,使用vanilla javascript将类添加/删除到其他元素

我已经查看了许多类似的问题,但找不到一个在vanilla JS中回答的具体示例如何将类添加一个不同的元素中并从中删除.我知道它与设置循环和迭代元素有关,但我在确切的过程中迷路了.

我有一些类名为faq-container的元素,当我点击其中任何一个时,我希望将类faq-display添加到body标签中.我知道我必须设置一个类似for(var i = 0; i< elements.length; i){elements [i] .classList.remove('hover');
但我不确定在代码中写到它的确切位置,以使其工作.我尝试了很多方法,但都失败了.

我当前的脚本如下所示,我只是定位数组中的第一个元素,但我希望能够点击任何faq-container元素并将类名添加到第一个也是唯一的body标记

document.addEventListener("DOMContentLoaded",function() {

  document.getElementsByClassName('faq-container')[0].addEventListener('click',function() {
    var faqToggle = document.getElementsByTagName('body')[0];
    if (faqToggle.classList.contains('faq-display')) {
      faqToggle.classList.remove('faq-display');
      // alert("remove faq display!");
    } else {
      faqToggle.classList.add('faq-display');
      // alert("add faq display!");
    }
  });


});
<div class="faq-container cf" id="faq-container">
  <h3 <?=ifxless::element( 'name')?>><?=ifxless::fill($this,'name');?> </h3>

  <div class="faq-content">
    <div class="h_line">&nbsp;</div>

    <div class="faq-bullets" <?=ifxless::element( 'content')?>>
      <?=ifxless::fill($this,'content');?>
    </div>

  </div>

</div>

解决方法

document.addEventListener("DOMContentLoaded",function() {
  var faqContainers = document.getElementsByClassName('faq-container');
  var faqToggle = document.getElementsByTagName('body')[0];
  for (var i = 0; i < faqContainers.length; i++) {

    faqContainers[i].addEventListener('click',function() {

      if (faqToggle.classList.contains('faq-display')) {
        faqToggle.classList.remove('faq-display');
        // alert("remove faq display!");
      } else {
        faqToggle.classList.add('faq-display');
        // alert("add faq display!");
      }

    });
  }


});

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...