繁体   English   中英

检查数组中的元素是否具有类,如果没有则添加类-JavaScript

[英]Check if element in array has class and add class if it doesn't - JavaScript

我正在尝试检查数组中的元素是否具有特定的类,如果没有,则添加该类。 单击用chart.js创建的饼图的一部分时,就会发生这种情况。 单击一个段时,将显示一个对应的隐藏div,并且所有未隐藏的div都将消失。 单击该段时,将从相关div中删除一个类以取消隐藏它,并且任何未隐藏的div都应重新添加该类以再次隐藏它。

我的问题是我不确定如何遍历数组以检查是否有任何div没有该类,如果没有,则将其添加回去。

HTML

    <div id="mod0" class="m-d-hide">Some content</div>
    <div id="mod1" class="m-d-hide">Some content</div>
    <div id="mod2" class="m-d-hide">Some content</div>
    <div id="mod3" class="m-d-hide">Some content</div>

使用Javascript

    var activePoints = window.modulePie1.getElementsAtEvent(event);
    var modDescription = [];
    for(var i=0; i<9; i++) {
       modDescription[i] = document.getElementById("mod"+i);

    if (activePoints.length > 0) {
     var clickedSegmentIndex = activePoints[0]._index;
     if (clickedSegmentIndex==[i]) {
        modDescription[i].classList.remove("m-d-hide");

        //Everything works until here - can't add class

        if (!modDescription.classList.contains("m-d-hide")) {
          modDescription.classList.add("m-d-hide");
          }
        }
      }
    }

在此先感谢您的帮助。

我设法通过在其他地方添加else语句来解决此问题

if (clickedSegment==[i]) 

循环,因此无需遍历数组并检查所有类。 现在的代码如下所示:

    var activePoints = window.modulePie1.getElementsAtEvent(event);
    var modDescription = [];
    for(var i=0; i<9; i++) {
       modDescription[i] = document.getElementById("mod"+i);

    if (activePoints.length > 0) {
     var clickedSegmentIndex = activePoints[0]._index;
     if (clickedSegmentIndex==[i]) {
        modDescription[i].classList.remove("m-d-hide");
       } else {
        if (!modDescription[i].classList.contains("m-d-hide")) {
          modDescription[i].classList.add("m-d-hide");
        }
       }
      }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM