将 if/else 组合成一条语句? (Javascript)
Combine if/else into one statement? (Javascript)
function changeButton () {
if (event.currentTarget.className == 'btnRed') {
event.currentTarget.className = 'btnGreen';
} else {
event.currentTarget.className = 'btnRed';
}
}
假设我有上面的代码。我见过将这两者结合起来的类似代码,但我真的不记得它是如何做到的。有点像 className = (btnGreen | btnRed)
.
很抱歉这个问题含糊不清。
你可以使用三元运算符(condition) ? (true) : (false)
event.currentTarget.className = event.currentTarget.className == 'btnRed' ? 'btnGreen' : 'btnRed';
我会更进一步,将字符串提取到变量中,以消除在整个解决方案中错误键入它们的能力。并将event.currentTarget
重构为变量
var RED_BUTTON_CLASS = 'btnRed',
GREEN_BUTTON_CLASS = 'btnGreen';
var currentTarget = event.currentTarget;
currentTarget.className = currentTarget.className == RED_BUTTON_CLASS ? GREEN_BUTTON_CLASS : RED_BUTTON_CLASS;
我觉得这只会让长运行更容易,完全可选
编辑
所以从 Jan 所说的内容中添加额外的信息。
var RED_BUTTON_CLASS = 'btnRed',
GREEN_BUTTON_CLASS = 'btnGreen';
这些可能描述了一种状态,因此您最好为它们命名:
var ERROR_BUTTON_CLASS = 'btnRed',
OK_BUTTON_CLASS = 'btnGreen';
function changeButton () {
if (event.currentTarget.className == 'btnRed') {
event.currentTarget.className = 'btnGreen';
} else {
event.currentTarget.className = 'btnRed';
}
}
假设我有上面的代码。我见过将这两者结合起来的类似代码,但我真的不记得它是如何做到的。有点像 className = (btnGreen | btnRed)
.
很抱歉这个问题含糊不清。
你可以使用三元运算符(condition) ? (true) : (false)
event.currentTarget.className = event.currentTarget.className == 'btnRed' ? 'btnGreen' : 'btnRed';
我会更进一步,将字符串提取到变量中,以消除在整个解决方案中错误键入它们的能力。并将event.currentTarget
重构为变量
var RED_BUTTON_CLASS = 'btnRed',
GREEN_BUTTON_CLASS = 'btnGreen';
var currentTarget = event.currentTarget;
currentTarget.className = currentTarget.className == RED_BUTTON_CLASS ? GREEN_BUTTON_CLASS : RED_BUTTON_CLASS;
我觉得这只会让长运行更容易,完全可选
编辑
所以从 Jan 所说的内容中添加额外的信息。
var RED_BUTTON_CLASS = 'btnRed',
GREEN_BUTTON_CLASS = 'btnGreen';
这些可能描述了一种状态,因此您最好为它们命名:
var ERROR_BUTTON_CLASS = 'btnRed',
OK_BUTTON_CLASS = 'btnGreen';