如何在JavaScript中只添加一次类?
我已经编写了以下代码:如何在JavaScript中只添加一次类?,javascript,arrays,Javascript,Arrays,我已经编写了以下代码: var reachedElement = document.querySelector(`[data-index='${elementInfo.elementIndex}']`); var elementClass = reachedElement.className.split(' '); for (var className of elementClass) { if (className !== 'myClass') { reachedElement.
var reachedElement = document.querySelector(`[data-index='${elementInfo.elementIndex}']`);
var elementClass = reachedElement.className.split(' ');
for (var className of elementClass) {
if (className !== 'myClass') {
reachedElement.className += ' myClass';
}
}
描述:我选择一个元素,使用split
方法将所有类放入一个数组中,并检查它们是否有myClass
。如果有,我不想做任何事情,但如果没有,我想添加我的类,我的问题是,当我的元素没有任何类或有多个类时,它不能正常工作,并添加尽可能多的数组值。发生了什么?
图片:如果你需要一个例子,就在这里。根据您的问题,您可以执行以下操作:
var reachedElements = document.querySelectorAll(`[data-index='${elementInfo.elementIndex}']`);
reachedElements.forEach((element) => element.classList.add("myClass"))
这将仅在类不存在时添加该类。如果您需要一个示例,可以阅读classList的文档。根据您的问题,您可以执行以下操作:
var reachedElements = document.querySelectorAll(`[data-index='${elementInfo.elementIndex}']`);
reachedElements.forEach((element) => element.classList.add("myClass"))
这将仅在类不存在时添加该类。您可以阅读classList的文档,它有add()
、remove()
、和toggle()
函数,这些函数将为您解决此问题:
let-reachedElements=document.querySelectorAll(`[data index='1']`);//切换到querySelectorAll,因此一次可以执行多个元素
reachedElements.forEach(函数(el){
el.classList.add('myClass');//自动防止同一元素上的重复
})
//证明:
console.log(document.getElementById('container').innerHTML)
.myClass{
颜色:#0F0
}
x
x
x
x
x
有添加()
、删除()
和切换()
功能,这些功能将为您解决此问题:
let-reachedElements=document.querySelectorAll(`[data index='1']`);//切换到querySelectorAll,因此一次可以执行多个元素
reachedElements.forEach(函数(el){
el.classList.add('myClass');//自动防止同一元素上的重复
})
//证明:
console.log(document.getElementById('container').innerHTML)
.myClass{
颜色:#0F0
}
x
x
x
x
x
使用起来不是很容易吗?考虑在新代码中使用PLER或CONST进行声明,而不是泛型(和更旧的)V.@ SIRKO。谢谢,我不知道。var.@Sirko谢谢我不知道。@versvs谢谢你的推荐。谢谢,帮了大忙。谢谢,帮了大忙。谢谢,帮了大忙。谢谢,帮了大忙。谢谢,帮了大忙。