Как использовать переменную javascript с переключением кода удаления?

#javascript

#javascript

Вопрос:

У меня есть button значение false / true для другого элемента выбора html.

При нажатии кнопки я хочу, чтобы элемент выбора заполнялся некоторыми значениями — поэтому я использовал этот код для этой цели:

 if ($('#make_a_choose').css("display") !== 'none') {

    var select = document.getElementById("myselect_id");
    var options = ["1", "2", "3", "4", "5"];

        for(var i = 0; i < options.length; i  ) {
            var opt = options[i];
            var el = document.createElement("option");
            el.textContent = opt;
            el.value = opt;
            select.appendChild(el);
        }

}
  

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

Поэтому я решил удалить элементы, когда кнопка make_a_choose снова отключится (как ложное состояние). У меня есть такой код для этого:

 if ($('#make_a_choose').css("display") === 'none') {

  var selectobject=document.getElementById("myselect_id");
  var slenght = selectobject.length;

  for (var i=1; i<slenght; i  ){
     selectobject.remove(i);
  }

}
  

Проблема в том, что этот код не удаляет все поля выбора, некоторые из них не удаляются. Я полагаю, это может быть связано с тем, что var slenght = selectobject.length динамически изменяется во время обработки цикла. Я использую i = 1 в качестве начального значения, потому что я не хочу, чтобы значение выбора по умолчанию удалялось, однако, если я использую i = 0, эта проблема все еще сохраняется.

Может кто-нибудь посоветовать, как это исправить?

Ответ №1:

Попробуйте это, пожалуйста!

 $("#myselect_id").find('option').not(':first').remove();
  

Вместо:

   for (var i=1; i<slenght; i  ){
     selectobject.remove(i);
  }
  

Комментарии:

1. Спасибо за ваш ответ. Я пробовал это, но, похоже, это удаляет только единственный вариант. У меня не работает:(

2. Опубликуйте код с помощью HTML, и я смогу вам помочь. 😉

3. jsfiddle.net/utkyv4jw просто нажмите несколько раз на кнопку, и вы увидите эффект. 🙂

4. jsfiddle.net/gwt2om59 вот оно, решение, я надеюсь вам помочь.

5. Отлично! Это работает! Большое вам спасибо. Ценю вашу поддержку!