Vanilla JavaScript向元素添加类

时间:2018-08-13 16:09:09

标签: javascript getelementbyid getelementsbyclassname

我想使用纯JS向某些元素添加类,并且熟悉选择带有ID的元素,但是当我尝试使用getElementsByClassName时,我的代码就中断了。是否无法通过类名称获取元素并添加新的类?

我知道以下代码可以工作,但是再次想通过className定位元素。

document.getElementById("id-name").classList.add("new-class");

2 个答案:

答案 0 :(得分:1)

您可以使用querySelectorAll选择包含类的每个元素,然后在所有元素上添加新类:

document.querySelectorAll('.class-name')
        .forEach(element => element.classList.add('new-class'))

答案 1 :(得分:0)

  

是否无法通过类名称获取元素并添加新类?

这当然是可能的。 Document.getElementsByClassName()返回具有所有给定类名的所有子元素的类似数组的对象。您必须迭代它们以添加类:

使用forEach()

[...document.getElementsByClassName("myClass")].forEach(function(el){
  el.classList.add("new-class");
});
.new-class{
  color: red;
}
<div class="myClass">Test</div>
<div class="myClass">Test 2</div>
<div class="myClass">Test 3</div>

使用for循环:

var elList = document.getElementsByClassName("myClass");
for(var i=0; i < elList.length; i++){
  elList[i].classList.add("new-class");
}
.new-class{
  color: red;
}
<div class="myClass">Test</div>
<div class="myClass">Test 2</div>
<div class="myClass">Test 3</div>

相关问题