Удалить дочерние узлы, сократить размер коллекции html

Я перебираю параметры раскрывающегося списка и хочу удалить параметр, если его значение соответствует определенному заданному условию. Я использовал selectObject.removechild(option)/option.remove(), но при этом сначала удаляется только одна опция, которая соответствует условию, но не другие, потому что при каждой операции удаления размер списка уменьшается, и, следовательно, все опции не проходят. Я хочу чистое решение JavaScript (без JQuery). Я много искал и нашел только решения JQuery. Есть ли другой способ?

var selectObject = document.getElementById("sel");
var opts = selectObject.options;
for(var i = 0; opts.length; i++){
  if(opts[i].value == val){
    opts[i].remove();
    //i also tried with: selectObject.removeChild(opts[i])
  }
}

person Abdullah Danyal    schedule 25.04.2017    source источник
comment
Покажите нам свой код и пример html. См. минимальный воспроизводимый пример и Как спросить   -  person charlietfl    schedule 25.04.2017
comment
Возможный дубликат Удалить значения из списка выбора на основе условия   -  person Mils    schedule 25.04.2017


Ответы (1)


Использование цикла for...of вместо индекса я смог заставить код работать. Вот код, показывающий, как это работает.

var selectObject = document.getElementById("sel");
var opts = selectObject.options;
for(let opt of opts){
  if(opt.value == val){
    opt.remove();
    //i also tried with: selectObject.removeChild(opts[i])
  }
}
person Jacob Petersen    schedule 25.04.2017