Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как удалить из Select все имеющиеся option (https://javascript.ru/forum/dom-window/75875-kak-udalit-iz-select-vse-imeyushhiesya-option.html)

finlolo 14.11.2018 09:30

Как удалить из Select все имеющиеся option
 
Здравствуйте!

Уже второй раз обращаюсь с select. Что-то у меня никак не получается удалить все, что имеется уже в select.

При выборе цвета iPhone, js код проверяет, есть ли что-то в select, если да, то удаляет и создает новые, если нет, то просто создает новые.

Разметка:
<select name="icolor" id="icolorphone_61">
   <option value="Черный">Черный</option>
   <option value="Золотой">Золотой</option>
</select>


Вот код:
var prodarr = JSON.parse(request.responseText);
   var list = document.querySelector('#icolorphone_'+id);
   console.log(list.options);
      if (list.options != 0) {
         for (var j = 0; j < list.options.length; j++){
            list.removeChild(list.children[j]); //тут удаляет 1 элемент и выходит, даже если элементов >1
         }
      } 
   for (var i = 0; i < prodarr.length; i++){
       Posting(id, prodarr[i]);
   }


Вот страница с которой проблема:
http://iphone.glazhost.tk/#showmodal_61

Nexus 14.11.2018 09:39

Попробуйте так:
var prodarr = JSON.parse(request.responseText);
   var list = document.querySelector('#icolorphone_'+id);
   console.log(list.options);
      if (list.options != 0) {
         var optionsCount=list.options.length;
         for (var j = 0; j < optionsCount; j++){
            list.removeChild(list.children[j]); //тут удаляет 1 элемент и выходит, даже если элементов >1
         }
      } 
   for (var i = 0; i < prodarr.length; i++){
       Posting(id, prodarr[i]);
   }

Условие в for проверяется каждую итерацию. Изначально у вас было 2 элемента, первый удалили - j=1, но и кол-во элементов теперь не 2, а 1, поэтому условие 1<1 не выполняется и программа выходит из цикла.

рони 14.11.2018 09:46

finlolo,
заменить строки 3 - 8 на
list.options.length = 0;

рони 14.11.2018 09:49

finlolo,
или в строке 6 заменить j на ноль
list.removeChild(list.children[0]);

finlolo 14.11.2018 10:04

Спасибо всем большое!


Часовой пояс GMT +3, время: 00:57.