[英]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.