Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中只添加一次类?_Javascript_Arrays - Fatal编程技术网

如何在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谢谢你的推荐。谢谢,帮了大忙。谢谢,帮了大忙。谢谢,帮了大忙。谢谢,帮了大忙。谢谢,帮了大忙。