如果声明(a == b&& c == d || e)|| a!= b)

时间:2018-04-20 19:01:25

标签: javascript if-statement

我正在尝试在下拉列表中获取一个值,以便在未选择其他值时显示。 基本上说如果显示内部,请不要显示Record_type_wf或record_type_vr 但是当在VR中加入或声明时,它只会中断并且它们都会出现。

if((zoneLocation == 'internal' && optionObj[option].value != 'record_type_wf' || 'vanity_type_vr') || zoneLocation != 'internal'){
    g_form.addOption('dns_record_type', optionObj[option].value, optionObj[option].text, optionObj[option].order);

    if (optionObj[option].value == currentRecordType){
        keepCurrentOption = true;
    }
}

1 个答案:

答案 0 :(得分:2)

这并不意味着您的意思:

(zoneLocation == 'internal' && optionObj[option].value != 'record_type_wf' || 'vanity_type_vr')

请注意,'vanity_type_vr'是一个真正的值,所以此测试总是成功,因为它的解释如下:

(zoneLocation == 'internal') && (optionObj[option].value != 'record_type_wf') || ('vanity_type_vr')

由于最后一个操作数,整个表达式(转换为布尔值)简化为true

这就是你的意思:

(zoneLocation == 'internal' && optionObj[option].value != 'record_type_wf' && optionObj[option].value != 'vanity_type_vr')