在javascript中选择并添加类

Yan*_*ran 13 javascript mootools dom

跨平台如果可能的话,如何在Javascript中选择类(但不是Jquery请-MooTools就好了 - )代码我无法添加ID?具体来说,我想在下面的任何li上添加"cf"类:

HTML

<div class="itemRelated">
  <ul>
<li class="even">
<li class="odd">
<li class="even">
Run Code Online (Sandbox Code Playgroud)

我试图摆弄它,但缺少一些东西:

使用Javascript

 var list, i;
list = document.getElementsByClassName("even, odd");
for (i = 0; i < list.length; ++i) {
    list[index].setAttribute('class', 'cf');
}
Run Code Online (Sandbox Code Playgroud)

的jsfiddle

PS.这个问题有惊人可能重复,(其它一个),但没有一个答案清楚.

Ser*_*gio 16

使用普通的javascript:

var list;
list = document.querySelectorAll("li.even, li.odd");
for (var i = 0; i < list.length; ++i) {
   list[i].classList.add('cf');
}
Run Code Online (Sandbox Code Playgroud)

演示

对于旧版浏览器,您可以使用:

var list = [];
var elements = document.getElementsByTagName('li');
for (var i = 0; i < elements.length; ++i) {
    if (elements[i].className == "even" || elements[i].className == "odd") {
        list.push(elements[i]);
    };
}
for (var i = 0; i < list.length; ++i) {
    if (list[i].className.split(' ').indexOf('cf') < 0) {
        list[i].className = list[i].className + ' cf';
    }
}
Run Code Online (Sandbox Code Playgroud)

演示


使用Mootools:

$$('.itemRelated li').addClass('cf');
Run Code Online (Sandbox Code Playgroud)

演示

或者如果您想按类别定位:

$$('li.even, li.odd').addClass('cf');
Run Code Online (Sandbox Code Playgroud)

演示

  • 因为它在当前的实现中,空格将正常工作 - 所以只要你确定这两个类都不在元素上,就使用它.否则,像你说的链二.另见http://www.youtube.com/watch?v=hZJacl2VkKo - 取决于用例等. (2认同)

Muf*_*Man 10

我知道这是旧的,但是有什么理由不简单地这样做(除了潜在的浏览器支持问题)?

document.querySelectorAll("li.even, li.odd").forEach((el) => {
    el.classList.add('cf');
});
Run Code Online (Sandbox Code Playgroud)

支持:https : //caniuse.com/#feat=es5