@eldgammel

Как с помощью JS цикла удалить все option внутри select?

Как удалить из select все option, чей value равен 1, 2 или 3?

<select id="delete">
  <option value="1">1</option>
  <option value="1">1</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="2">2</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="3">3</option>
  <option value="3">3</option>
  <option value="3">3</option>
</select>
  • Вопрос задан
  • 66 просмотров
Решения вопроса 1
@eldgammel Автор вопроса
Сам нашел ответ
for(let i of document.querySelectorAll("select")) {
  for(let n of i.querySelectorAll("option")) {
    if(n.getAttribute("value") == 1) {
      n.remove();
    } else if(n.getAttribute("value") == 2) {
      n.remove(); 
    } else if(n.getAttribute("value") == 3) {
      n.remove();
    }
  }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
OCTAGRAM
@OCTAGRAM
Можно обходить всех children тега select. Обходить лучше с конца, ведь результат children — массивоподобная штука, обновляющаяся автоматом. Если мы идём в цикле по индексам вперёд и удаляем, то начинаем пропускать. Как вариант, идти вперёд, но после удаления индекс не инкрементировать. Или декрементировать, чтоб на следующей итерации инкремент вернул как было. Или заранее чем-нибудь вроде Array.prototype.slice.call превратить массивоподобный children в настоящий массив, и там уже с этим неживым снимком поработать.
Ответ написан
0xD34F
@0xD34F Куратор тега JavaScript
const values = [ '1', '2', '3' ];
document.querySelectorAll('option').forEach(n => values.includes(n.value) && n.remove());
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Sportrecs Москва
от 150 000 до 200 000 ₽
29 нояб. 2020, в 01:43
15000 руб./за проект
29 нояб. 2020, в 01:16
500 руб./за проект
29 нояб. 2020, в 00:50
800 руб./за проект