Сначала вы должны получить все li
теги:
var lis = document.getElementsByTagName('li');
Затем зациклите их и выполните действие:
for(var i = lis.length; i--;) {
var li = lis[i];
if(/\bdisabled\b/.test(li.className)) {
li.className += ' hide';
}
}
Ссылка: 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
}
Если у вас есть ссылка на какой-то li
, вы используете только класс if:
if(/\bdisabled\b/.test(element.className)) {
element.className += ' hide';
}
(Во всех случаях вы также можете добавить дополнительный тест, чтобы проверить, есть ли у элементов класс hide
.)
Обновление:
Если вы хотите снова удалить этот класс, вы можете сделать аналогичный цикл и использовать replace
:
for(var i = lis.length; i--;) {
var li = lis[i];
li.className = li.className.replace(/\s*hide\s*/, '');
}
Следует рассмотреть возможность повторного использования функций добавления и удаления классов, чтобы их можно было использовать и с другими классами.