Описание проблемы
Я пытаюсь удалить опции из выпадающего списка, основываясь на их классах, в зависимости от выбора в другом списке. Проблема заключается в том, что не все опции удаляются сразу, а некоторые остаются даже после вызова функции. В настоящее время меня нужно изменить выбор примерно 7 раз, чтобы удалить все ненужные варианты.
Код функции
function активироватьВыборКласса(типКласса) {
let выборКласса = document.getElementById("класс");
console.log("Количество вариантов: " + выборКласса.length);
for (let i = 0; i < выборКласса.length; i++) {
if (!выборКласса.options[i].classList.contains(типКласса)) {
выборКласса.remove(i);
}
}
выборКласса.disabled = false;
выборКласса.classList.remove("disabled-select");
let defaultOption = document.getElementById("класс-опция-по-умолчанию");
defaultOption.innerHTML = " -- выберите класс -- ";
}
HTML структура
<select onchange="javascript:активироватьВыборКласса(this.value);" id="тип-класса" name="тип-класса" required>
<option disabled selected value> -- выберите тип класса -- </option>
<option value="Маг">Маг</option>
<option value="Вор">Вор</option>
<option value="Воин">Воин</option>
<option value="Лучник">Лучник</option>
<option value="Пират">Пират</option>
</select>
<select id="класс" name="класс" disabled required>
<option class="Маг Вор Воин Лучник Пират" id="класс-опция-по-умолчанию" disabled selected></option>
<!-- Маги -->
<option class="Маг" value="Боевой Маг">Боевой Маг</option>
<option class="Маг" value="Тайный Маг">Тайный Маг</option>
<option class="Маг" value="Пламенный Маг">Пламенный Маг</option>
<option class="Маг" value="Еван">Еван</option>
<option class="Маг" value="Канна">Канна</option>
<option class="Маг" value="Светлый Маг">Светлый Маг</option>
<option class="Маг" value="Бишоп">Бишоп</option>
<option class="Маг" value="Ледяной/Молниеносный Маг">Ледяной/Молниеносный Маг</option>
<option class="Маг" value="Огненный/Ядовитый Маг">Огненный/Ядовитый Маг</option>
<option class="Маг" value="Кинисис">Кинисис</option>
<option class="Маг" value="Иллиум">Иллиум</option>
<!-- Воры -->
<option class="Вор" value="Двойной Клинок">Двойной Клинок</option>
<option class="Вор" value="Ночной Дух">Ночной Дух</option>
<option class="Вор" value="Фантом">Фантом</option>
<option class="Вор" value="Тень">Тень</option>
<option class="Вор" value="Ночной Лорд">Ночной Лорд</option>
<option class="Вор" value="Ксено">Ксено</option>
<option class="Вор" value="Кадена">Кадена</option>
<!-- Воины -->
<option class="Воин" value="Аран">Аран</option>
<option class="Воин" value="Рассветный Воин">Рассветный Воин</option>
<option class="Воин" value="Демонический Мститель">Демонический Мститель</option>
<option class="Воин" value="Демонический Убийца">Демонический Убийца</option>
<option class="Воин" value="Хаято">Хаято</option>
<option class="Воин" value="Кайзер">Кайзер</option>
<option class="Воин" value="Михиль">Михиль</option>
<option class="Воин" value="Темный Рыцарь">Темный Рыцарь</option>
<option class="Воин" value="Герой">Герой</option>
<option class="Воин" value="Паладин">Паладин</option>
<option class="Воин" value="Ноль">Ноль</option>
<option class="Воин" value="Бластер">Бластер</option>
<!-- Лучники -->
<option class="Лучник" value="Стрелок">Стрелок</option>
<option class="Лучник" value="МастерицаЛука">МастерицаЛука</option>
<option class="Лучник" value="Дикий Охотник">Дикий Охотник</option>
<option class="Лучник" value="Ветреный Стрелок">Ветреный Стрелок</option>
<option class="Лучник" value="Мерседес">Мерседес</option>
<option class="Лучник" value="Следопыт">Следопыт</option>
<!-- Пираты -->
<option class="Пират" value="Ангельский Бустер">Ангельский Бустер</option>
<option class="Пират" value="Канонир">Канонир</option>
<option class="Пират" value="Джет">Джет</option>
<option class="Пират" value="Механик">Механик</option>
<option class="Пират" value="Буканьер">Буканьер</option>
<option class="Пират" value="Курсир">Курсир</option>
<option class="Пират" value="Тень">Тень</option>
<option class="Пират" value="Громовой Удар">Громовой Удар</option>
<option class="Пират" value="Арк">Арк</option>
</select>
Ожидания
Когда я выбираю тип класса, то “класс” должен активироваться и показывать доступные варианты.
Реальность
Опции “класса” удаляются как будто случайно за ~6 вызовов активироватьВыборКласса
, прежде чем элемент пустеет.