2015-01-17 69 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他用戶點擊提交,並調用這部分函數,​​我想刪除它們的值。

我試着做的

& &(和)

複合|| (或)

buttttt它odiously它沒有工作。

主要問題:什麼擺脫的最好方式築巢(我計劃做這兩次,剛換的代碼),這將是最有效的?我希望這可以用最少量的IF語句來完成。

請注意:如果您更改了很多代碼,我可能不知道您在說什麼..請準備好教我或幫助我學習!

+0

'!deal_trade_in_model_1 ===!deal_trade_in_amount_1'將是TRUE;如果任他們兩個都填寫或兩者都是空的。這有幫助嗎?僅供參考,值始終是字符串(假設它們是文本字段)。 –

+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將始終返回一個字符串。如果字符串爲空,則將字符串轉換爲布爾值,結果爲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