Javascript 如何将if-else语句转换为三元运算符?
我有这个:Javascript 如何将if-else语句转换为三元运算符?,javascript,jquery,Javascript,Jquery,我有这个: if (THIS.target.hasClass('icon-false-shape')) { $(this).addClass('white-font'); if (THIS.answer === false) { console.log('EVERYTHING COMES GREEN'); $(this).addClass('background-green'); } else
if (THIS.target.hasClass('icon-false-shape')) {
$(this).addClass('white-font');
if (THIS.answer === false) {
console.log('EVERYTHING COMES GREEN');
$(this).addClass('background-green');
} else {
$(this).addClass('background-red');
}
}
if (THIS.target.hasClass('icon-true-shape')) {
$(this).addClass('white-font');
if (THIS.answer === true) {
console.log('EVERYTHING COMES GREEN');
$(this).addClass('background-green');
} else {
$(this).addClass('background-red');
}
}
我想把它变成这样:
$(this).addClass('background-' + ((THIS.target.hasClass('icon-false-shape') && THIS.answer === false) ? 'green' : 'red'))
.addClass('white-font');
$(this).addClass('background-' + ((THIS.target.hasClass('icon-true-shape') && THIS.answer === true) ? 'green' : 'red'))
.addClass('white-font');
但我的逻辑是失败的
有什么建议吗?我会使用,在内部处理条件-请参阅:
$(this).addClass('white-font');
$(this).toggleClass('background-green', THIS.answer === true);
$(this).toggleClass('background-red', THIS.answer === true);
或者捕获这两种情况,将条件移动到单独的变量中:
var shouldBeGreen = THIS.target.hasClass('icon-false-shape') && THIS.answer === false;
var shouldBeRed = THIS.target.hasClass('icon-true-shape') && THIS.answer === true;
$(this).toggleClass('background-green', shouldBeGreen);
$(this).toggleClass('background-red', shouldBeRed);
首先,我们关注红色或绿色的条件(在本例中,我使用“红色”的标准):
(THIS.target.hasClass('icon-false-shape')&&THIS.answer!==false)
- 或者,
(THIS.target.hasClass('icon-true-shape')&&THIS.answer==false)
还请注意,您可以使用空格来添加多个类
$(this).addClass(“白色字体”+…)”
,而不是此$(this.addClass(…).addClass(“白色字体”)
例如$(this.addClass('background-'+(this.answer?'red':'green'))
@JaromandaX我知道,但我想说的是我不能将我所拥有的调整为三元。哦,对了……你甚至想要混合使用图标假形状/图标真形状
——你更喜欢短的不可读代码来清除code@ajax333221它是有效的。把它当作答案。@nietzsche,好吗
$(this).addClass('white-font background-' + (((THIS.target.hasClass('icon-false-shape') && THIS.answer !== false) || (THIS.target.hasClass('icon-true-shape') && THIS.answer === false)) ? 'red' : 'green'));