我正在尝试将类添加到具有禁用类的li标记

Ame*_*men 0 javascript conditional

如何编写JavaScript条件语句:

If an li tag has a class of "disabled" then add a class of "hide"
Run Code Online (Sandbox Code Playgroud)

我正在尝试将该类添加到具有此类的li标记中.li标签没有id.

Fel*_*ing 5

首先,你必须获得所有li标签:

var lis = document.getElementsByTagName('li');
Run Code Online (Sandbox Code Playgroud)

然后遍历它们并执行操作:

for(var i = lis.length; i--;) {
    var li = lis[i];
    if(/\bdisabled\b/.test(li.className)) {
        li.className += ' hide';
    }
}
Run Code Online (Sandbox Code Playgroud)

参考: getElementsByTagName,className

我们为什么不能使用getElementsByClassName

因为它不支持IE8.


但您可以测试浏览器是否支持querySelectorAll:

if(typeof document.querySelectorAll === 'function') {
    var lis = document.querySelectorAll('li.disabled');
    for(var i = lis.length; i--;) {
        lis[i].className += ' hide';
    }
}
else {
    // code from above
}
Run Code Online (Sandbox Code Playgroud)

如果您只是引用某些内容li,则只使用if类:

if(/\bdisabled\b/.test(element.className)) {
    element.className += ' hide';
}
Run Code Online (Sandbox Code Playgroud)

(在所有情况下,您还可以添加进一步的测试以检查元素是否已经具有hide该类.)


更新:

如果你想再次删除该类,你可以进行类似的循环并使用replace:

for(var i = lis.length; i--;) {
    var li = lis[i];
    li.className = li.className.replace(/\s*hide\s*/, '');
}
Run Code Online (Sandbox Code Playgroud)

您应该考虑使添加和删除类函数可重用,以便您也可以将它们与其他类一起使用.