jQuery - 如果Else语句不起作用,但如果分成单独的if语句则有效

时间:2016-06-01 22:37:23

标签: jquery if-statement

以下代码仅适用于if statement,后续else if statements不会触发。但如果我将所有3个分成个体if statements,一切正常。我怎么能让他们一起玩得很好呢?

不工作

  if ( headingLength < 1 ) {
    // show error message
    $('.compose-wrap .message-heading .help-block').fadeIn();
  } else if ( messageLength < 1 ) {
    // show error message
    $('.compose-wrap .message-body .help-block').fadeIn();
  } else if ( formtagLength < 1 ) {
    // show error message
    $('.compose-wrap .choose-recipients .help-block').fadeIn();
  }

工作

  if ( headingLength < 1 ) {
    // show error message
    $('.compose-wrap .message-heading .help-block').fadeIn();
  }

  if ( messageLength < 1 ) {
    // show error message
    $('.compose-wrap .message-body .help-block').fadeIn();
  }

  if ( formtagLength < 1 ) {
    // show error message
    $('.compose-wrap .choose-recipients .help-block').fadeIn();
  }

2 个答案:

答案 0 :(得分:1)

听起来好像是在你不想要的时候运行你的else if。如果解决了前一个条件中的任何一个,则条件退出,这是预期的行为。

<强>答案: 如果你底部的某些东西没有运行你想要运行的东西,那么你可能不希望那个部分在其他内部。如果你需要仔细检查你的逻辑比较运算符,如果你确实需要在else中。例如> >= === == != <= < &&等。切换它们直到你拥有你想要什么。

您也可以将它们合并,例如

if ( headingLength < 1 ) {
    // show error message
    $('.compose-wrap .message-heading .help-block').fadeIn();
} else if ( (messageLength < 1) && headingLength >=1 ) {
    // show error message
    $('.compose-wrap .message-body .help-block').fadeIn();
} else {
    console.log('wasnt one of the above yet, rinse and repeat...');
}

此外,最好以最后的其他方式结束,也许使用控制台日志,直到你拨入。

答案 1 :(得分:1)

你可能有条件headingLength < 1messageLength < 1,但你不能让第二个运行。 ELSE IF 应该在逻辑上用于非会议条件。