【问题标题】:if else statement in JavaScript not working properlyJavaScript 中的 if else 语句无法正常工作
【发布时间】:2014-08-28 17:20:58
【问题描述】:

从这段代码可以看出:

function setBodyClasses() {
    var answer = $surveyAns.getAnswer('QUEST223');
    answer = 'oro';
    if(!surveyUtils.isNullOrWhiteSpace(answer)) {
        if (answer.toLowerCase().indexOf('oro')) {
            $scope.bodyClasses = 'vip_gold';
        }
        else if (answer.toLowerCase().indexOf('platino')) {
            $scope.bodyClasses = 'vip_platinum';
        }
        else {
            $scope.bodyClasses = '';
        }
    }
}

由于某种原因,if else 语句无法正常工作,您可以看到 answer 值为 oro,它应该在第一个 if 上停止,但当它在第一个 if 条件下进行比较时值,并且假设它不是相同的值,它会向前移动,并且由于某些其他原因,即使值不同,它也会进入第二个 if 条件。 知道为什么会这样吗?

【问题讨论】:

  • 截图看不到,添加代码。
  • 请将您的代码发布为文本,而不是图像。

标签: javascript jquery angularjs


【解决方案1】:

您错误地检查了answer 是否包含该字符串。 .indexOf() 将返回您在字符串中的位置。它可能是0,这是字符串的开头(它就像一个数组,它的索引为零)。如果未找到,则返回 -1

如果您只使用if(answer.toLowerCase().indexOf('oro')),它将是false,因为0 是“错误的”。

你想做的事:if(answer.toLowerCase().indexOf('oro') >= 0)

您确定要首先使用indexOf() 吗?这是检查字符串是否“包含”oro。你确定你不只是需要:if(answer.toLowerCase() === 'oro')

【讨论】:

  • 我需要检查字符串是否包含'oro'。谢谢
【解决方案2】:

indexOf 返回 0,而 0 是一个假值,因此它不进入条件。应该是:

.indexOf('oro') > -1

其他条件相同

【讨论】:

    【解决方案3】:

    您正在使用 indexOf 来查找字符串中是否存在“oro”。然而,IndexOf 正确返回值 0,这在 JavaScript 中相当于 false。我个人会使用answer.indexOf('oro') !== -1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-18
      • 2014-09-27
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多