我正在尝试检查数组中的元素是否具有特定的类,如果没有,则添加该类。单击用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");
}
}
}
}
在此先感谢您的帮助。
答案 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");
}
}
}
}