“如果”合并/避免嵌套

时间:2015-01-17 02:59:07

标签: javascript if-statement nested

我真的想避免在这段代码中嵌套...

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)如果只填写其中一个,则用户单击“提交”,并且调用该部分函数,​​我想删除它们的值。

我尝试过做

的化合物
  

&安培;&安培; (和)

  

|| (或)

但是,它可能无法正常工作。

主要问题:摆脱嵌套的最佳方法是什么(我计划这样做两次,只是交换代码)最有效的方法是什么?我希望这可以在尽可能少的IF语句中完成。

请注意:如果你经常更改代码,我可能不知道你在说什么......请准备好教我或帮助我学习!

1 个答案:

答案 0 :(得分: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 = "";
}