我们如何在JavaScript中将三元运算符用于多个条件?

时间:2018-12-18 15:20:15

标签: javascript

下面的代码可以工作,但是为了简化代码,我们如何使用三元运算符?

function fnOnChangeType() {

    if (document.RequestHistoryForm.strMessageType.value=="All") {
        document.getElementById("selectMessageView").disabled=false;
    } else {
        document.getElementById("selectMessageView").disabled=true;
    }
}

function fnOnChangeView() {
    if (document.RequestHistoryForm.strMessageView.value=="") {
        document.getElementById("selectMessageType").disabled=false;
    } else {
        document.getElementById("selectMessageType").disabled=true;
    }
}

5 个答案:

答案 0 :(得分:5)

这里不需要三元组:

function fnOnChangeType() { 
    document.getElementById("selectMessageView").disabled = document.RequestHistoryForm.strMessageType.value !== "All";
}

function fnOnChangeView() {
    document.getElementById("selectMessageType").disabled = document.RequestHistoryForm.strMessageView.value !== "";
}

答案 1 :(得分:2)

我认为您可以通过这样做来缩短它;

function fnOnChangeType() {
    document.getElementById("selectMessageView").disabled = document.RequestHistoryForm.strMessageType.value !== "All";
}
function fnOnChangeView() {
    document.getElementById("selectMessageType").disabled = document.RequestHistoryForm.strMessageView.value !== "";
}

答案 2 :(得分:2)

JS中三元运算的语法:

 var statement = expression1 ? value1 : value2 ; 
    // If expression is true,then return value1, 
    // otherwise return value2; 

尝试:

document.getElementById("selectMessageView").disabled = document.RequestHistoryForm.strMessageType.value=="All" ? false : true;

答案 3 :(得分:1)

另一种方法(可能不会只用于这样的两个集合,但是如果存在三个或更多)则是编写通用版本以供重用:

function enableFieldOnValue(fieldToEnable, testField, value) {
  document.getElementById(fieldToEnable).disabled = 
    document.RequestHistoryForm[testField].value == value
}

enableFieldOnValue("selectMessageView", "strMessageType", "All")
enableFieldOnValue("selectMessageType", "strMessageView", "")

答案 4 :(得分:0)

我认为您能得到的最好的是:

summary(mymodel)

在这种情况下,使用三元运算符将是最糟糕的,因为您只会使用不必要的fnOnChangeType = ()=> document.getElementById("selectMessageView").disabled = document.RequestHistoryForm.strMessageType.value != "All" fnOnChangeView = ()=> document.getElementById("selectMessageType").disabled = document.RequestHistoryForm.strMessageView.value != "" 后缀来加长函数,当您只求条件倒置时,就可以简化该行。看看:

? false : true

如果将对象放在变量中,则可以提高可读性:

fnOnChangeType = ()=>
    document.getElementById("selectMessageView").disabled = 
        (document.RequestHistoryForm.strMessageType.value == "All" ? false : true;
fnOnChangeView = ()=>
    document.getElementById("selectMessageType").disabled =    
        document.RequestHistoryForm.strMessageView.value == "" ? false : true;