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

时间:2018-09-12 10:21:04

标签: 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");
          }
        }
      }
    }

在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我已通过在

中添加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");
        }
       }
      }
    }