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'));