Проблема с получением выбранной опции и возвратом

#javascript #html

#javascript #HTML

Вопрос:

У меня проблема с возвращаемым значением в js. Мне нужно вернуть его, потому что я хочу использовать его в

  var rusiavimas = selectedServices();
 

Итак, моя функция выглядит следующим образом.

    function selectedServices()
    {
         var selectedServices = [];
        $('.common_change').change(function(){
        selectedServices = $(this).val();
        alert(selectedServices);
    
        
    });
        
      return selectedServices;
    
    }
 

Мой HTML-код

               <select name="rusiavimas" class="common_change" id="cars">
                  <option value="none" selected disabled hidden> 
     Pasirinkite variantą 
  </option>  
          <option value="naujausi">Naujausi viršuje</option>
          <option value="pigiausi" >Pigiausi viršuje</option>
          <option value="brangiausi">Brangiausi viršuje</option>

            </select>
 

Затем я выбираю опцию, в функции оповещения я получаю правильное значение, но в моем возврате оно не возвращает его.

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

1. Используйте это selectedServices.push($(this).val()); вместо этого selectedServices = $(this).val(); . 2-й — перезаписать массив до одного значения

2. спасибо, он вернется

Ответ №1:

Ваш код содержит много проблем, я пытаюсь исправить их ниже

Ваш JS-скрипт всегда возвращает пустой массив, потому что при вызове функции var rusiavimas = selectedServices(); внутренняя .change функция не запускается и не изменяет значение массива

 var selectedServices = [];

        $('.common_change').change(function(){
            
            selectedServices.push($(this).val());
            
            if(selectedServices.length > 0){
                alert("selected service: "   selectedServices.toString());
            }
            console.log(selectedServices);
        }); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select name="rusiavimas" class="common_change" id="cars">
        <option value="none" selected disabled hidden> 
           Pasirinkite variantą 
        </option>  
        <option value="naujausi">Naujausi viršuje</option>
        <option value="pigiausi" >Pigiausi viršuje</option>
        <option value="brangiausi">Brangiausi viršuje</option>
    </select> 

Ответ №2:

Каждый раз после изменения вашего массива он присваивает вашему массиву последнее общее значение.

Лучший способ, как было сказано, использовать комментарии selectedSerices.push($(this).val()); Вы также можете использовать глубокое копирование, что в вашем случае не рекомендуется selectedSerices = [...selectedSerices, $(this).val()] . Я думаю, это вам поможет!