zaza41rus
@zaza41rus

Как удалить все классы, начинающиеся с определённой подстроки?

Нужно удалять класс modal--mod1 или modal--mod2 или modal--mod3.

Писать в коде

.classList.remove('modal--mod1')
.classList.remove('modal--mod2')
.classList.remove('modal--mod3')

вроде лишнее же.
  • Вопрос задан
  • 257 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Кого надо удалить: const classPrefix = 'modal--';

Удаляем:

Array.from(el.classList).forEach(n => el.classList.toggle(n, !!n.indexOf(classPrefix)));

или

el.classList.remove(...[...el.classList].filter(n => n.startsWith(classPrefix)));

или

for (let i = el.classList.length; i--;) {
  if (el.classList[i].search(classPrefix) === 0) {
    el.classList.remove(el.classList[i]);
  }
}

или

el.classList.value = el.classList.value
  .split(' ')
  .filter(RegExp.prototype.test.bind(RegExp(`^(?!${classPrefix})`)))
  .join(' ');

или

el.className = el.className.replace(RegExp(`(^| )${classPrefix}\\S*`, 'g'), '').trim();
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
Получить массив с именами классов,
отфильтровать начинающиеся на искомую подстроку,
удалить только их:
через 3 секунды удалятся классы, начинающиеся на "habr--"
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
21 нояб. 2024, в 19:31
500 руб./за проект
21 нояб. 2024, в 19:28
200000 руб./за проект