Развернуть оператор if

#javascript #jquery #html

#javascript #jquery #HTML

Вопрос:

Приведенный ниже фрагмент кода был создан для того, чтобы скрывать или показывать выпадающие списки в зависимости от того, что выбрано. В приведенном ниже примере:

 **TRANSLATION**
If modelyear <= 67
And assyplant=bf
Or modelyear >=68 
then display the following dropdowns etc.
  

Я хотел бы подробнее остановиться на этом, указав следующее:

 If modelyear <=67
And assyplant =bf
OR 
modelyear <=67
And assyplant =bc
Or modelyear >=68 then display the following dropdowns etc etc etc.
  

Уже есть следующий рабочий код:

 // model_year   assy_plant logic
                if (thisField == 'model_year' || thisField == 'assy_plant') {
                    var modelYear = parseInt($('#model_year').children('option:selected').text());
                    if (isNaN(modelYear)) {
                        return;
                    }
                    var assyPlant = $('#assy_plant').children('option:selected').text();

                    $('tr#row6').css('display', 'none');
                    $('tr#row7').css('display', 'none');
                    $('tr#row6 select').attr('disabled', 'disabled');
                    $('tr#row7 select').attr('disabled', 'disabled');
                    if (((modelYear <= 67 amp;amp; assyPlant.toLowerCase()) == 'bf') 
                    || modelYear >=   68) {
                        $('tr#row6').css('display', 'table-row');
                        $('tr#row6 select').removeAttr('disabled');
                    } else {
                        $('tr#row7').css('display', 'table-row');
                        $('tr#row7 select').removeAttr('disabled');
                    }
                }
  

Вполне вероятно, что в будущем мне придется добавлять дополнительные вспомогательные значения. Спасибо за ваше время.

Ответ №1:

Вы можете использовать jQuery.inArray() для проверки, является ли assyplant это одним из возможных значений.

 var assyplants = ['bf', 'bc']; // Expandable list of assyPlant values to check for

if ((model_year <= 67 amp;amp; jQuery.inArray(assyPlant.toLowerCase(), assyplants)!==-1) 
     || model_year >= 68) 
{ ...
  

Ответ №2:

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

 var poss_values = ['bf', 'bc']; 

var check_assy = poss_values.some(function(val){
        return assyPlant.toLowerCase() === val;
    })
if ((modelYear <= 67 amp;amp; check_assy) || modelYear >=   68) {
        $('tr#row6').css('display', 'table-row');
        $('tr#row6 select').removeAttr('disabled');
        } else {
                $('tr#row7').css('display', 'table-row');
                $('tr#row7 select').removeAttr('disabled');
        } 
  

Ответ №3:

 if (((modelYear <= 67 amp;amp; assyPlant.toLowerCase()) == 'bf') 
                    || modelYear >=   68) {
                        $('tr#row6').css('display', 'table-row');
                        $('tr#row6 select').removeAttr('disabled');
                    } 
 else if (((modelYear <= 67 amp;amp; assyPlant.toLowerCase()) == 'bc') 
                    || modelYear >=   68) {
                        $('tr#row6').css('display', 'table-row');
                        $('tr#row6 select').removeAttr('disabled');


                    } else {
                        $('tr#row7').css('display', 'table-row');
                        $('tr#row7 select').removeAttr('disabled');
                    }
                }

                else {
                        $('tr#row7').css('display', 'table-row');
                        $('tr#row7 select').removeAttr('disabled');
                    }
                }
  

Я добавил оператор else if, чтобы вы могли добавить больше вспомогательных модулей. Конечно, вы должны назначить им новую переменную следующим образом: var values =['bf', 'bc'];