2017-02-21 5 views
0

Я пишу следующий JavaScript, который собирается удалить некоторые опции из списка выбора:Как удалить параметры из списка выбора, не влияя на индекс?

var selectobject = document.getElementById("Approver_90afaad9-2b54-46fb-8ac1-7374e4efa11e_$DropDownChoice"); 

for (var i = 0; i < selectobject.options.length; i++) { 
    var isCM = false; 

    for (var ii = 0; ii < assets.length; ii++) { 
     if (assets[ii].Title == selectobject.options[i].value) { 
      isCM = true; 
     } 
    } 
    if (isCM == false) { 
     selectobject.remove(i); 
    } 
} 

но проблема я столкнулся в том, что в том, что при удалении параметра с помощью selectobject.remove(i); затем i индекса внутри selectobject будет изменен, так есть ли способ сохранить исходный индекс после selectobject.remove(i); ?? Я попытался скопировать selectobject внутри нового var, но все-таки я столкнулся с таким же вопросом ...

Спасибо

+1

Что касается использования 'splice()'? –

+1

Я предполагаю, что часть проблемы заключается в том, что при изменении индекса элементы в поле выбора пропускаются. Одним из способов противодействия этому является обратный цикл, т. Е. 'For (var i = selectobject.options.length; i> = 0; i -)'. Таким образом, элементы, затронутые изменением индекса, уже обработаны. –

+0

@Vilas splice() в моем случае не удаляли опции –

ответ

0

У меня есть обходной путь. Может быть, вы можете использовать его. Вместо

selectobject.remove(i);

Вы можете использовать:

selectobject.style.display = "none"; 

Это будет даже сохранить свой первоначальный индекс.

+0

, поэтому я попробую этот подход просто в случае, если я не смогу корректно удалить remove(), поскольку использование .remove может быть более стандартным, чем скрытие параметров. –

+0

Да, вы правы, что использование remove() является более стандартным способом :) –

Смежные вопросы