Есть код к примеру такой:
<div class="info">
<i id="curr" class="first second"></i>
</div>
Как мне удалить 2-ой класс у элемента ?
Но мне необходимо учитывать то что имя второго класса будет изменяться динамически и .classList.remove('second') мне не подходит
Вариант 1, простейший (берем класс по индексу 1, и удаляем его):
const el = document.querySelector('#curr');
el.classList.remove(el.classList.item(1));
console.log(el.className);
<div class="info">
<i id="curr" class="first second third"></i>
</div>
Вариант 2, мощнейший splice для классов (ну а почему бы и нет :) ):
console.log(classSplice('#curr', 1, 2, 'foo', 'bar'));
function classSplice(selector, ...args) {
const el = document.querySelector(selector);
if (!el) return;
const classes = el.className.split(/\s+/);
classes.splice(...args);
return (el.className = classes.join(' '));
}
<div class="info">
<i id="curr" class="first second third fourth"></i>
</div>
Вы спокойно можете получить строку классов, и из нее выбрать все необходимое.
Для примера добавил css классов, чтобы было видно.
var classList = document.getElementById('curr').className.split(/\s+/);
document.getElementById('curr').className = classList[0];
.first{
background-color: red;
}
.second{
border-radius: 50px;
}
<div class="info">
<i id="curr" class="first second" style = "width: 50px; height: 50px; position: absolute"></i>
</div>
Удаляет именно второй (по порядку) класс, а не все классы после первого.
function removeClass(position) {
const element = document.getElementById('curr');
removeClassOnPosition(element, position);
showCurrentClasses(element);
}
function removeClassOnPosition(element, position = 0, count = 1) {
var classList = Array.from(document.getElementById('curr').classList);
classList.splice(position, count);
document.getElementById('curr').className = classList.join(' ');
}
function showCurrentClasses(element) {
currentClasses.textContent = element.classList;
}
showCurrentClasses(document.getElementById('curr'));
.first {
background-color: red;
}
.second {
border-radius: 50px;
}
.third {
color: white;
}
<div class="info">
<div id="curr" class="first second third" style="width: 50px; height: 50px">text</div>
</div>
<div id="currentClasses"></div>
<button onclick="removeClass(1)">remove second class</button>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Если у сайта проблемы с сертификатом, как правило, Chrome блокирует его открытиеПри помощи линка "Перейти на сайт (не безопасно)" сайт более не блокируется
Как через API расширений браузера firefox узнать IP сайтаНу или преобразовать URL в IP
Собственно при загрузке файла, хочу проверять его название и запрещать загрузку, при недопустимых символах
Я хочу отложить загрузку счетчика Метрики до момента, когда пользователь начнет скроллить страницу