下面的代码可以工作,但是为了简化代码,我们如何使用三元运算符?
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;
}
}
答案 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;