2015-01-17 4 views
1

Я действительно пытаюсь избежать вложенности в этом фрагменте кода ...«Если» консолидация/избежать вложенности

deal_trade_in_model_1 = document.getElementById('deal_trade_in_model_1').value; 
deal_trade_in_amount_1 = document.getElementById('deal_trade_in_amount_1').value; 
if (typeof deal_trade_in_model_1 !== 'undefined' && deal_trade_in_model_1 !== null) { 
    console.log(deal_trade_in_amount_1); 
    console.log(deal_trade_in_model_1); 
     if (deal_trade_in_model_1 !== null || deal_trade_in_model_1 !== "") { 
      if (deal_trade_in_amount_1 == null || deal_trade_in_amount_1 == "") { 
       console.log('entered into function'); 
       document.getElementById("deal_trade_in_model_1").value = ""; 
       document.getElementById("deal_trade_in_amount_1").value = ""; 
    } 
} 
} 

В принципе, то, что эта функция делает принимает значение из двух полей ... вещи в знать о них и то, что я хочу сделать для них:

1) Они не требуется

2) Если один из них заполняется, другой должен быть

3) Если только один из них заполняется, t он нажимает кнопку submit, и эта часть функции вызывается, я хочу удалить значение обоих из них.

Я попытался сделать соединение

& & (и)

и

|| (или)

buttttt это одиозно это не сработало.

Главный вопрос: Какой лучший способ избавиться от гнездования (я планировал сделать это дважды и просто поменять код), который будет наиболее эффективным? Я хочу, чтобы это было сделано предпочтительно в наименьшем количестве утверждений IF.

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

+0

'! Deal_trade_in_model_1 ===! Deal_trade_in_amount_1' будет' true', если оба они заполняются или оба из них пусты. Это помогает? FYI, значения всегда будут строками (если они являются текстовыми полями). –

+0

Да, но, ища все остальное, мне это не понадобится, не так ли? – ilarsona

+0

Ну, я думаю, ваш весь код упростит 'if (! Deal_trade_in_model_1! ==! Deal_trade_in_amount_1) {document.getElementById (" deal_trade_in_model_1 "). Value =" "; document.getElementById ("deal_trade_in_amount_1"). value = ""; } '. –

ответ

1

Похоже, вы только хотите что-то сделать, если любое из полей пуст, но не то и другое. Предполагая, что оба элемента являются текстовыми полями, .value всегда будет возвращать строку. Преобразование строки в boolean приводит к false, если строка пуста, в противном случае true.

Так

Boolean(deal_trade_in_model_1) === Boolean(deal_trade_in_amount_1) 

будет true, если оба поля имеют значение (как будет конвертировать в true) или оба поля пустыми (как конвертировать в false).

Таким образом, код может быть сведен к

var model_1 = document.getElementById('deal_trade_in_model_1'); 
var amount_1 = document.getElementById('deal_trade_in_amount_1'); 

if (Boolean(model_1.value) !== Boolean(amount_1.value)) { 
    model_1.value = ""; 
    amount_1.value = ""; 
} 
+0

Я попробую это :) Это имеет смысл для меня. – ilarsona

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